1

これらの命令でController を上書きしようとしましたが、それらは Action メソッドに対してのみ機能し、他のメソッドに対しては機能しませんでした。Controller _init() メソッドをオーバーライドすることは可能ですか?

4

1 に答える 1

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()関数が保護されていることに注意してください。これがおそらくあなたを妨げているものです。

于 2012-05-22T14:00:58.110 に答える