2012-05-22 58 views
1

我試圖用these instructions覆蓋Controller,但它們只適用於Action方法,但不適用於其他方法。是否有可能重寫Controller _init()方法?Magento覆蓋控制器初始化方法

+2

請更改你的名字 – sulabh

+0

我找不到任何幫助,我很着急,所以我只是編輯模塊文件,現在我必須在模塊更新時合併那些文件,但至少它能夠工作。如果有人知道如何重寫控制器init方法,那麼知道這一點很好。 – newbie

回答

0

請確保您正在擴展正確的文件。這種方法確實有效。使用CustomerController進行測試。將重新發布我的代碼:

config.xml文件:

<admin> 
    <routers> 
     <module> 
      <use>admin</use> 
      <args> 
       <module>Company_Module</module> 
       <frontName>module</frontName> 
      </args> 
     </module> 
     <adminhtml> 
      <args> 
       <modules> 
        <module before="Mage_Adminhtml">Company_Module</module> 
       </modules> 
      </args> 
     </adminhtml> 
    </routers> 
</admin> 

公司/模塊/控制器/ CustomerController.php:

<?php 
include_once("Mage/Adminhtml/controllers/CustomerController.php"); 
class Company_Module_CustomerController extends Mage_Adminhtml_CustomerController 
{ 
    protected function _initCustomer($idFieldname = 'id') 
    { 
     Mage::log('overridden'); 
     parent::_initCustomer($idFieldname); 
    } 
} 

注意的包括,注意,它擴展控制器Mage_Adminhtml_CustomerControllerNOTMage_Adminhtml_Controller_Action,另外,請注意,_initCustomer()功能是受保護的,這可能是什麼阻止你。