Como posso apontar o método de ação administrativa para algo diferente de `indexAction ()`?
-
12-12-2019 - |
Pergunta
No meu módulo, estou configurando meu menu assim.
<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>
O código que você precisa se concentrar é action
<action>adminhtml/catalog_arattr_install</action>
Por esse valor, meu URL fica assim
www.meudominio.com/admin/catalog_arattr_install/index/key/[key_value]
De acordo com este ulr, Magento espera uma configuração de controlador como esta.
Arquivo : 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()
{
}
}
Porém não é isso que eu quero..Eu preciso da minha análise de URL assim.
www.meudominio.com/admin/catalog_arattr/install/key/[key_value]
Significa que quero que o método abaixo seja chamado ao clicar no menu
Arquivo : 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()
{
}
}
Mas parece que o magento sempre procura indexAction()
quando configuramos um menu.
Existe alguma maneira de direcionar para minha ação personalizada ao clicar no menu?
Solução
Deve ser tão simples quanto adicionar peças extras ao action
nó.
<action>adminhtml/your_controller/your_action</action>
Confira como funciona a parte de downloads da seção de administração.
<action>adminhtml/report_product/downloads</action>
Aqui o controlador é Mage_Adminhtml_Report_ProductController
e a ação é downloadsAction
Outras dicas
Seu action
caminho deveria ser adminhtml/catalog_arattr/install
para definir o install
seção do caminho como a ação.Cada /
barra separa o módulo, o controlador e depois a ação, então como você tem apenas 1 barra, a ação é considerada como sendo indexAction()
.Com o URL acima, a solicitação terá como alvo o Namespace_Modulename_Adminhtml_Catalog_ArattrController
e dentro disso installAction()
.É claro que você precisará alterar a localização do controlador para um diretório superior.