我尝试用these instructions覆盖Controller,但它们只适用于Action方法,但不适用于其他任何方法。是否可以覆盖Controller _init()方法?
答案 0 :(得分: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_CustomerController
NOT Mage_Adminhtml_Controller_Action
,同时请注意_initCustomer()
功能受到保护,可能是什么阻碍了你。