0

我想覆盖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

*/
}

但它仍然加载核心控制器类。我在这里做错了什么?任何帮助,将不胜感激。

4

2 回答 2

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>

和控制器类:

app/code/local/Namespace/ModuleName/controllers/Sales/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>是关键。

于 2013-07-19T08:11:47.127 回答
0

我知道我迟到了 3 年,但我只花了一个小时在这个上,所以我的经验可能会在未来对其他人有所帮助。

如果您使用的是 magento 企业版,则必须输入:

before="Enterprise_SalesArchive_Adminhtml"

代替

before="Mage_Adminhtml"

在 config.xml 文件中的控制器路由器声明中,然后下面的确切代码将像魅力一样工作。

于 2016-09-05T16:02:17.233 回答