如何将管理操作方法指向“indexAction()”以外的方法?
-
12-12-2019 - |
题
在我的模块中,我正在像这样设置菜单。
<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()
. 。当然,您需要将控制器的位置更改为上一级目录。