Jump to content

Ayuda con Modelo y Controlador


Abrahan Romero

Recommended Posts

Tengo dudas de como funcionan los forms, en el action esta la ruta del controlador pero no se como es que elije que sera un insert en vez de un update, veo que el metodo de envio es por POST, pero no se en donde se capturen los valores de los input, ya que no veo nada como esto

 

$lastname = $_POST['lastname'];

 

Estoy desarrollando un modulo donde exista un form de registro y actualizacion de datos pero no logro ver como funciona el controlador recibiendo los datos de los inputs y selecionando el metodo que se comunicara con el modelo para realizar cada accion.

 

espero me haya explicado y tener un poco de ayuda. muchas gracias

Link to comment
Share on other sites

Entiendo que al final lo que quieres es una página nueva en el Frontoffice, ya que no necesitas hacer uso de los hooks.  Fíjate por ejemplo en el módulo productcomments (productcomments>controllers>front>default.php)

 

Haces un controlador que extienda de ModuleFrontController y en el initContent() miras en función del parámetro enviado la acción que quiere realizar. En prestashop los parametros se len con Tools::getValue()

class ProductCommentsDefaultModuleFrontController extends ModuleFrontController
{
	public function __construct()
	{
		parent::__construct();

		$this->context = Context::getContext();
	}

	public function initContent()
	{
		parent::initContent();

		if (Tools::isSubmit('action'))
		{
			switch(Tools::getValue('action'))
			{
				case 'add_comment':
					$this->ajaxProcessAddComment();
					break;
				case 'report_abuse':
					$this->ajaxProcessReportAbuse();
					break;
				case 'comment_is_usefull':
					$this->ajaxProcessCommentIsUsefull();
					break;
			}
		}
	}

Luego dentro de cada acción coge los parámetros, llama al modelo (o si es muy sencillo haces los insertes, updates directamente..), hace lo que tenga que hacer muestra mensaje de error, éxito..etc

 

 

En este caso este formulario trabaja con ajax y es un poco diferente ya que devuelve json, cuando en una petición normal cargaría la plantilla smarty y la rellenaría.

 

 

En realidad es prácticamente igual que un controlador del Core front de Prestashop que extiende directamente de FrontController  (ModuleFrontController extiende de FrontController). Por lo que puedes mirar otros controladores front estándar de Prestashop como CategoryController.

 

Veras que en general hacen el trabajo en init() e initContent() ahí cogen los parametros llaman al modelo cargan la plantilla smarty y la rellenan con el modelo.

 

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

Luego esta el tema de dar a ese nuevo controlador una URL amigable. Eso se hace desde el backoffice, en SEO & URLS > añades uno nuevo y seleccionas el controlador del módulo

 

http://doc.prestashop.com/display/PS15/New+Developers+Features+In+PrestaShop+1.5#NewDevelopersFeaturesInPrestaShop1.5-NewFile-treeAndOperations

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...