Cómo configurar la URL para una acción de controlador particular - Magento

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.

preguntado el 05 de septiembre de 12 a las 10:09

Cree otra función Acion en ese controlador -

@Daya No quiero crear un nuevo controlador o acción, es solo que quiero acortar la URL de la acción del controlador. -

2 Respuestas

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:

  1. Reescrituras de URL basadas en configuración en desuso
  2. Crear entradas de reescritura de URL en la tabla core_url_rewrite
  3. 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

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.

Más sobre rutas en el manual de ZF

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 or haz tu propia pregunta.