Cómo configurar la URL para una acción de controlador particular - Magento
Frecuentes
Visto 3,055 veces
1
Si tengo el módulo mymodule en el que tengo el controlador de índice. En el que tengo subacción como 'subacción'
Normalmente accedo a la página como
http://www.mywebsite/index.php/mymodule/index/subaction
¿Cómo puedo configurar la URL desde un código como
http://www.mywebsite/index.php/subaction
or
http://www.mywebsite/index.php/mymodule/subaction
Nota :: No quiero crear un nuevo controlador. Quiero esto en el mismo controlador de índice.
2 Respuestas
0
La coincidencia de URL a controlador de Magento funciona a través del enrutador estándar que espera que las URL tengan una forma específica. Si quieres cambiar eso, tienes algunas opciones a tu disposición:
- Reescrituras de URL basadas en configuración en desuso
- Crear entradas de reescritura de URL en la tabla core_url_rewrite
- Cree una clase de enrutador personalizada para que coincida con los patrones de URL que le gustaría usar
Al considerar cómo debería funcionar la coincidencia de URL, debe considerar cómo Magento esperará construir la URL utilizando sus herramientas de cálculo de URL nativas, así como también cómo conseguir que las solicitudes coincidan.
Respondido el 05 de Septiembre de 12 a las 12:09
¿Hay alguna forma de usar xml para establecer una ruta para este tipo de acción? - Kamesh Jungi
-3
Puedes hacer esto usando rutas
en su arranque haga lo siguiente
protected function _initMyRoutes() {
$this->bootstrap('frontController');
$front = $this->getResource('frontController');
$router = $front->getRouter();
$config = new Zend_Config_Ini(APPLICATION_PATH . '/configs/routes.ini', APPLICATION_ENV);
$router->addDefaultRoutes();
$router->addConfig($config, 'routes');
return $router;
}
y en el directorio configs crea un archivo llamado route.ini y en él coloca lo siguiente
routes.myRoute.type = "Zend_Controller_Router_Route_Static"
routes.myRoute.route = "/subaction/"
routes.myRoute.defaults.module = "mymodule"
routes.myRoute.defaults.controller = "index"
routes.myRoute.defaults.action = "subaction"
OR
puede agregar la ruta directamente en su arranque con
protected function _initMyRoutes() {
$this->bootstrap('frontController');
$front = $this->getResource('frontController');
$router = $front->getRouter();
$router->addDefaultRoutes();
$route = new Zend_Controller_Router_Route_Static(
'subaction',
array('module' => 'mymodule', 'controller' => 'index', 'action' => 'subaction')
);
$router->addRoute('subaction', $route);
return $router;
}
Eso debería funcionar, pero tenga en cuenta que usar rutas puede ser realmente un dolor.
Respondido el 05 de Septiembre de 12 a las 11:09
gracias por la respuesta, soy nuevo en magento, me puedes dar mas detalles como puedo modificar bootstrap? - Kamesh Jungi
Ábralo :) debe estar en la carpeta de la aplicación (se llama Bootstrap.php) - Ponsjuh
Esta respuesta no es correcta, ya que Magento no es una aplicación MVC de Zend Framework. Edité las etiquetas para reflejar esto. Debe tenerse en cuenta que Ponsjuh estaba respondiendo la pregunta en función de las etiquetas incorrectas. Benmarks
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas magento or haz tu propia pregunta.
Cree otra función Acion en ese controlador - Daya
@Daya No quiero crear un nuevo controlador o acción, es solo que quiero acortar la URL de la acción del controlador. - Kamesh Jungi