jose.alonso Posted September 2, 2016 Share Posted September 2, 2016 Hola amigos!! A ver si soy capaz de explicar lo que quiero hacer, ya que puede ser un poco confuso. Tengo un formulario en el footer que quiero que valide unos campos y después se redireccioné a una pagina CMS y me muestre un mensaje de "Gracias". Nota: La validación no me supone ningún problema, pero no quiero hacer nada de esto por Ajax ya que no lo controlo. Para realizar la siguiente acción me he creado un modulo con un controller y además una pagina CMS. Hasta aquí todo bien. Pero ahora viene una de mis confusiónes ya que nunca trabaje con controllers dentro de un módulo. Supuestamente dentro del /modules/mi_modulo/controllers/front/display.php hay que llamar al archivo .tpl de la siguiente manera: public function initContent() { parent::initContent(); $this->setTemplate('miarchivo.tpl'); } Este archivo se encuentra en la siguiente ruta: /module/mi_modulo/views/front/miarchivo.tpl Después, dentro del archivo /modules/mi_modulo/miarchivo.php he creado un hook personalizado de la siguiente forma: public function hookMiHookPersonalizado($params) { return $this->display(__FILE__,'miarchivo.tpl'); } Dicho hook lo pinto en el CMS con el siguiente código: {if $cms->id=='19'} {hook h='MiHookPersonalizado'} {/if} DUDAS: Lo primero es que al crear una página CMS me genera una url amigable, es necesario utilizar esta url en algún momento? Lo segundo es que no estoy seguro es si debo de llamar al mismo archivo .tpl (miarchivo.tpl) desde diferentes sitios. lo tercero es que no sé como hacer para que el formulario me llame al controller pero sin utilizar la url larga: https://www.midominio.com/index.php?fc=module&module=mi_modulo&controller=display he intentado ser lo más claro posible. Un saludo. Link to comment Share on other sites More sharing options...
ventura Posted September 2, 2016 Share Posted September 2, 2016 Puedes llamar al controlador desde una variable 'llamarControlador' => $this->context->link->getModuleLink($this->name, 'NOMBRE_DEL_CONTROLADOR', array(), true), Link to comment Share on other sites More sharing options...
jose.alonso Posted September 2, 2016 Author Share Posted September 2, 2016 Y esa linea de código la tengo que poner en el /modules/mi_modulo/miarchivo.php dentro del hook personalizado verdad? Link to comment Share on other sites More sharing options...
ventura Posted September 2, 2016 Share Posted September 2, 2016 si, asignando $this->context->smarty->assign('llamarControlador', $this->context->link->getModuleLink($this->name, 'NOMBRE_DEL_CONTROLADOR', array(), true)); Link to comment Share on other sites More sharing options...
jose.alonso Posted September 2, 2016 Author Share Posted September 2, 2016 me da error y no entiendo el porque. Este es mi código: public function hookMiHookPersonalizado($params) { $this->context->smarty->assign('llamarControlador', $this->context->link->getModuleLink($this->name, 'display', array(), true)); return $this->display(__FILE__,'miarchivo.tpl'); } "display" es el nombre de mi controller: /modules/mi_modulo/controllers/front/display.php Tiene que llevar el nombre del archivo o el nombre de la clase del controller? Link to comment Share on other sites More sharing options...
ventura Posted September 2, 2016 Share Posted September 2, 2016 Si, seria asi, el nombre del controlador del modulo, cambia esta parte y dejalo asi $this->context->link->getModuleLink('Nombre_del_Modulo', 'display', array(), true)); Link to comment Share on other sites More sharing options...
jose.alonso Posted September 2, 2016 Author Share Posted September 2, 2016 Gracias pero sigue sin funcionar. Link to comment Share on other sites More sharing options...
ventura Posted September 2, 2016 Share Posted September 2, 2016 Que error te marca ? Link to comment Share on other sites More sharing options...
jose.alonso Posted September 2, 2016 Author Share Posted September 2, 2016 Ya se cual era el fallo, es que esa línea de código no tenia que ir en mi hook personalizado sino en el hooDisplayHeader. Muchas gracias por tu ayuda. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now