我想覆盖Mage/Adminhtml/controllers/Sales/OrderController.php
。我的模块是app/code/local/MW/Adminhtml
。
在我的conig.xml中,我输入了以下代码。
<config>
.....
<admin>
<routers>
<adminhtml>
<args>
<modules>
<MW_Adminhtml before="Mage_Adminhtml">MW_Adminhtml</MW_Adminhtml>
</modules>
</args>
</adminhtml>
</routers>
</admin>
</config>
控制器如下。
require_once 'Mage/Adminhtml/controllers/Sales/OrderController.php';
class MW_Adminhtml_Sales_OrderController extends Mage_Adminhtml_Sales_OrderController
{
/*
some code
*/
}
但它仍然加载核心控制器类。我在这做错了什么?任何帮助将不胜感激。
答案 0 :(得分:2)
这是来自magento 1.7
的工作示例在你的app / code / local / Namespace / ModuleName / etc / config.xml
中<?xml version="1.0"?>
<config>
<frontend>
</frontend>
<adminhtml>
</adminhtml>
<admin>
<routers>
<adminhtml>
<use>admin</use>
<args>
<modules>
<Namespace_ModuleName before="Mage_Adminhtml">Namespace_ModuleName</Namespace_ModuleName>
</modules>
</args>
</adminhtml>
</routers>
</admin>
</config>
和控制器类:
应用程序/代码/本地/命名空间/模块名/控制器/销售/ OrderController.php
require_once 'Mage/Adminhtml/controllers/Sales/OrderController.php';
class Namespace_ModuleName_Sales_OrderController extends Mage_Adminhtml_Sales_OrderController
{
protected function _construct()
{
die('it works');
}
}
可能使用:<use>admin</use>
是这种情况下的关键。
答案 1 :(得分:0)
我知道我已经晚了3年,但我只花了一个小时才这一次,所以我的经验可能在将来帮助其他人。
如果您使用的是magento企业版,则必须添加:
before="Enterprise_SalesArchive_Adminhtml"
而不是
before="Mage_Adminhtml"
在config.xml文件中的控制器路由器声明中,然后下面的确切代码就像魅力一样。