在我的模块中,我正在像这样设置菜单。

 <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>

您需要集中精力的代码是 action

 <action>adminhtml/catalog_arattr_install</action>

对于这个值,我的网址如下所示

www.mydomain.com/admin/catalog_arattr_install/index/key/[key_value]

根据这个 ulr,Magento 期望有这样的控制器设置。

文件 : 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()
     {

     }
}

然而这不是我想要的..我需要像这样解析我的网址。

www.mydomain.com/admin/catalog_arattr/install/key/[key_value]

意味着我希望单击菜单时调用以下方法

文件 : 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()
     {

     }
}

但似乎,magento 总是在寻找 indexAction() 当我们设置菜单时。

单击菜单时有什么方法可以直接执行我的自定义操作吗?

有帮助吗?

解决方案

应该像添加额外的零件一样简单 action 节点。

<action>adminhtml/your_controller/your_action</action>

查看管理部分的下载部分如何工作。

<action>adminhtml/report_product/downloads</action>

这里的控制器是 Mage_Adminhtml_Report_ProductController 行动是 downloadsAction

其他提示

你的 action 路径应该是 adminhtml/catalog_arattr/install 定义 install 路径的一部分作为操作。每个 / 斜杠将模块、控制器和操作分开,因此只有 1 个斜杠,则假定操作是 indexAction(). 。使用上述 URL,请求将定位到 Namespace_Modulename_Adminhtml_Catalog_ArattrController 里面 installAction(). 。当然,您需要将控制器的位置更改为上一级目录。

许可以下: CC-BY-SA归因
scroll top