所以我试图覆盖核心CustomerController massDelete操作。这就是我到目前为止所做的:
config.xml
<frontend>
<routers>
<customer_massdelete>
<args>
<modules>
<MyModule_MyExtension before="Mage_Adminhtml">MyModule_MyExtension</MyModule_MyExtension>
</modules>
</args>
</customer_massdelete>
</routers>
</frontend>
我的控制器:
app/code/local/MyModule/MyExtension/controllers/CustomerController.php
<?php
require_once 'Mage/Adminhtml/controllers/CustomerController.php';
class MyModule_MyExtension_CustomerController extends Mage_Adminhtml_CustomerController {
public function massDeleteAction() {
die('my controller');
}
}
然而,当我运行批量删除时,我放入控制器中的模具会被运行。有什么想法吗?
更新
尝试解决方案如下:
<config>
<admin>
<routers>
<adminhtml>
<args>
<modules>
<MyModule_MyExtension before="Mage_Adminhtml">MyModule_MyExtension</MyModule_MyExtension>
</modules>
</args>
</adminhtml>
</routers>
</admin>
</config>
仍然没有...
更新2:
我的最终config.xml是这样的:
<config>
<admin>
<routers>
<adminhtml>
<args>
<modules>
<Mymodule_Myextension before="Mage_XmlConnect_Adminhtml">Mymodule_Myextension</Mymodule_Myextension>
</modules>
</args>
</adminhtml>
</routers>
</admin>
</config>
但是,如果我之前=“Mage_XmlConnect_Adminhtml”,那么在尝试转到大多数索引页面时会遇到一些覆盖问题。但是,如果我优先级更低,它不会覆盖。所以我再次陷入困境。
答案 0 :(得分:0)
我猜你的config.xml是假的,你可以尝试:
<admin>
<routers>
<adminhtml>
<args>
<modules>
<MyModule_MyExtension before="Mage_Adminhtml">MyModule_MyExtension</MyModule_MyExtension>
</modules>
</args>
</adminhtml>
</routers>
</admin>
参考:http://prattski.com/2010/06/24/magento-overriding-core-files-blocks-models-resources-controllers/
答案 1 :(得分:0)
经过大量研究后,我终于找到了问题所在。我的问题是before="Mage_Adminhtml"
中的config.xml
。由于企业的工作方式,覆盖顶级课程是不够的。
我使用print_r(Mage::getConfig()->getNode('admin/routers/adminhtml'), true)
找出覆盖它的所有模块并完成列表。 Mage_XmlConnect_Adminhtml
是在企业方法之前覆盖此方法的最后一个类。
我的最终config.xml是这样的:
<config>
<admin>
<routers>
<adminhtml>
<args>
<modules>
<Mymodule_Myextensionbefore="Mage_XmlConnect_Adminhtml">Mymodule_Myextension</Mymodule_Myextension>
</modules>
</args>
</adminhtml>
</routers>
</admin>
</config>
它现在完美无缺(编辑:不,它不......看下面的评论)