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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a magento.stackexchange
scroll top