2013-07-18 43 views
0

我想覆蓋Mage/Adminhtml/controllers/Sales/OrderController.php。我的模塊是app/code/local/MW/Adminhtml如何覆蓋magento中的OrderController

在我的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

任何人都知道如何重寫'法師/ Adminhtml /控制器/銷售/ OrderController.php' – Sukeshini

回答

2

這是從Magento的1.7

工作示例在您的應用程序/代碼/本地/命名空間/模塊名在/ 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> 

和控制器類:

應用程序/代碼/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'); 
    } 
} 

可能用usin g:<use>admin</use>是這種情況下的關鍵。

+0

嗨, 感謝您的回覆淨頭。 我嘗試了網絡上的所有建議,包括您的建議。但什麼都行不通。所以我重新創建了所有的編碼,然後工作正常。我不確定是什麼問題。但現在它工作正常。 謝謝大家 – Sukeshini

0

我知道我遲了3年,但我只花了一個小時,所以我的經驗可能會在未來幫助其他人。

如果您使用的是Magento企業版,你必須把:

before="Enterprise_SalesArchive_Adminhtml" 

,而不是

before="Mage_Adminhtml" 

在控制器路由器聲明在config.xml文件,然後確切的代碼下面會像魅力一樣工作。