Hola de nuevo,
He creado un modulo que muestra un buscador en la home, ese buscador buscara por atributos, pero ahora tengo el problema que el form tiene un action que debe de resolver en
public function getFormAction()
{
return $this->getUrl($this->_storeManager->getStore()->getBaseUrl() . 'index/result', ['_secure' => true]);
}
Index/result
Pero siempre muestra un 404 en esa pagina cuando se hace click en buscar.
Tengo entendido que Magento tiene un routes.xml "etc/frontend/routes.xml" que es el que resuelve la ruta, dentro del Controller/Index/Result.php
y este es mi código en el routes.xml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:App/etc/routes.xsd">
<router id="result">
<route id="result" frontName="result">
<module name="Mnuhell_FormSearchAttributes" />
</route>
</router>
</config>
Y no se si me falta o me sobra algo es mi primer módulo en Magento y voy algo despistado.
Alguien que controle y me pueda hacer ver donde esta el error?
Gracias a todos!!
Solved! Go to Solution.
No lo he revisado en detalle pero tu controller result tiene este Namespace:
namespace Mnuhell\FormSearchAttributes\Controller\ResultSearch;
Y debería ser:
namespace Mnuhell\FormSearchAttributes\Controller\Index;
Pruébalo y comenta el resultado.
Hola @mnuhell,
A riesgo de estar haciendo self-promotion, quizás puedas repasar con este ejemplo (que lleva también a código funcional en GitHub): http://www.damianculotta.com.ar/magento/como-crear-un-frontend-controller-en-magento2
Gracias @Damian Culotta voy a revisarlo a ver si me falta algo, otra cosa, el módulo lo tengo activado en local, me muestra el Form en la home, pero cuando hago deploy al servidor de PRE no se activa y no lo muestra, ¿Sabes si hay que hacer algo para para activar los módulos en el servidor?
He sustituido el archivo config.php que es donde le dice que el modulo este activado y aun así no me lo detecta ni en el BackEnd.
Gracias!
Hola @mnuhell,
Probablemente deberías activar manualmente el módulo en el servidor. Dependiendo de algunos factores, no se sincroniza qué módulos están activos y cuáles no.
Hola @Damian Culotta en el System->advance->advance no me aparece el modulo, y el el archivo config.php del servidor lo tengo activado.
Hay otra manera de activarlo manualmente?
@Damian Culotta En el tutorial que has pasado, no tengo problema, el problema lo tengo cuando el action del form tiene que apuntar al controlador Controller/Index/Result.php, no lo resuelve la ruta ``` /formsearchattributes/index/result/ ``` Cuando hago submit.
Tengo un die en la función execute() pero siempre me devuelve 404.
Hola @mnuhell,
Debería ver todo el código, no sabría decirte porque estaría adivinando.
Se que el código que te he mostrado funciona, pero no se me ocurre qué puede suceder.
¿Puedes ejecutar en la consola este comando?
bin/magento module:status
Te dirá qué modulo esta activo y cuales no.
@Damian Culotta No te lo vas a crear, pero el archivo registration.php lo tenía como Registration.php con la R mayúscula.
Ya esta solucionado!!
Ahora me falta poder ver porque el action del formulario no me redirige al controllador result y me da error 404.
te adjunto el modulo por dropbox
https://www.dropbox.com/s/rs09igerwx6ah7q/Mnuhell.zip?dl=0
A ver si ves porque no me funciona.
Gracias
No lo he revisado en detalle pero tu controller result tiene este Namespace:
namespace Mnuhell\FormSearchAttributes\Controller\ResultSearch;
Y debería ser:
namespace Mnuhell\FormSearchAttributes\Controller\Index;
Pruébalo y comenta el resultado.
Gracias @Damian Culotta eso era, ahora muestra el mensaje de la función execute, un paso mas ahora ya funciona y no muestra el error.
Muchas Gracias!!