Magento覆盖Controller init方法

时间:2012-05-22 10:28:43

标签: php magento magento-1.6

我尝试用these instructions覆盖Controller,但它们只适用于Action方法,但不适用于其他任何方法。是否可以覆盖Controller _init()方法?

1 个答案:

答案 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()功能受到保护,可能是什么阻碍了你。