1

我试图用这些指令覆盖 Controller ,但它们只适用于 Action 方法,而不适用于其他任何方法。是否可以覆盖 Controller _init() 方法?

4

1 回答 1

0

确保您正在扩展正确的文件。这种方法确实有效。使用 CustomerController 进行测试。将重新发布我的代码:

配置.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()功能受到保护,这可能是阻碍您的原因。

于 2012-05-22T14:00:58.110 回答