mage_adminhtml_controller_actionをオーバーライドするにはどうすればよいですか
質問
具体的には、私は潜在的にオーバーライドすることに興味があります _isAllowed()
デフォルトであるように false
それ以外の true
. 。私が見つけたもののほとんどは、オーバーライドコントローラーに関連して特定のルートのコントローラーをオーバーライドする方法を扱っていますが、ここには当てはまるとは思いません。
私がこれをしたい理由は、私が開発していないサードパーティモジュールが実装していないようにするためです _isAllowed()
コントローラーでは、デフォルトでアクセスできない。
これはかなり低レベルの変更であり、コアで物事を壊す可能性があることを知っています。その場合、私はそれを行うことができないかもしれません。しかし、私はそれを実装したら明らかにそれをテストします。
内部の論理を少し見ました Mage_Core_Controller_Varien_Router_Standard::match()
しかし、役立つものは何も見られません。
解決
これは、他の多くのクラスが拡張するクラスであるため、簡単に過負荷にすることはできません(ベースモデルや抽象クラスに似ています)。
この動作を本当に変更したい場合は、ソース全体をコピーして貼り付けて、その中に配置する必要があります。 app/code/local/Mage/Adminhtml/Controller/Action.php
.
「適切な」マゼントコンベンションに従って実装することをお勧めします _isAllowed
カスタムコントローラークラスのメソッド。サードパーティモジュールを保護するために、上記のアプローチは機能しますが、意図的にアップグレードをより困難にします。 「クリーナー」アプローチは、各特定のルートのコントローラーを書き直すために言及したとおりです。これには多くの労力と時間が含まれる可能性があります。各プロジェクトに適切にラインを描く必要があります。