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