¿Cómo puedo señalar un método de acción de administrador que no sea `indexAction()`?
-
12-12-2019 - |
Pregunta
En mi módulo, estoy configurando mi menú de esta manera.
<menu>
<catalog>
<children>
<rkt_arattr translate="title" module="rkt_arattr">
<title>Manage My Custom Attribute</title>
<sort_order>100</sort_order>
<children>
<install_attr translate="title" module="rkt_arattr">
<title>Install My Attribute</title>
<action>adminhtml/catalog_arattr_install</action>
<sort_order>10</sort_order>
</install_attr>
</children>
</rkt_arattr>
</children>
</catalog>
</menu>
El código que necesitas para concentrarte es action
<action>adminhtml/catalog_arattr_install</action>
Para este valor, mi URL se ve así
www.midominio.com/admin/catalog_arattr_install/index/key/[key_value]
Según este ulr, Magento espera una configuración de controlador como esta.
Archivo : app/code/local/Namespace/Modulename/controllers/Adminhtml/Catalog/Araattr/InstallController.php
<?php
class Namespace_Modulename_Adminhtml_Catalog_Arattr_InstallController extends Mage_Adminhtml_Contorller_Action
{
public function indexAction()
{
}
}
Sin embargo esto no es lo que quiero...Necesito mi análisis de URL como este.
www.midominio.com/admin/catalog_arattr/install/key/[key_value]
Significa que quiero que se llame al siguiente método cuando hago clic en el menú
Archivo : app/code/local/Namespace/Modulename/controllers/Adminhtml/Catalog/ArattrController.php
<?php
class Namespace_Modulename_Adminhtml_Catalog_ArattrController extends Mage_Adminhtml_Contorller_Action
{
public function installAction()
{
}
}
Pero parece que magento siempre busca indexAction()
cuando configuramos un menú.
¿Hay alguna forma de dirigirme a mi acción personalizada cuando hago clic en el menú?
Solución
Debería ser tan simple como agregar piezas adicionales al action
nodo.
<action>adminhtml/your_controller/your_action</action>
Vea cómo funciona la parte de descargas de la sección de administración.
<action>adminhtml/report_product/downloads</action>
Aquí está el controlador Mage_Adminhtml_Report_ProductController
y la acción es downloadsAction
Otros consejos
Su action
el camino debe ser adminhtml/catalog_arattr/install
para definir el install
sección del camino como la acción.Cada /
La barra diagonal separa el módulo, el controlador y luego la acción, de modo que como solo tiene 1 barra, se supone que la acción es indexAction()
.Con la URL anterior, la solicitud se dirigirá al Namespace_Modulename_Adminhtml_Catalog_ArattrController
y dentro de eso installAction()
.Por supuesto, necesitarás cambiar la ubicación del controlador a un directorio superior.