mage_adminhtml_controller_actionをオーバーライドするにはどうすればよいですか

magento.stackexchange https://magento.stackexchange.com/questions/419

  •  16-10-2019
  •  | 
  •  

質問

具体的には、私は潜在的にオーバーライドすることに興味があります _isAllowed() デフォルトであるように false それ以外の true. 。私が見つけたもののほとんどは、オーバーライドコントローラーに関連して特定のルートのコントローラーをオーバーライドする方法を扱っていますが、ここには当てはまるとは思いません。

私がこれをしたい理由は、私が開発していないサードパーティモジュールが実装していないようにするためです _isAllowed() コントローラーでは、デフォルトでアクセスできない。

これはかなり低レベルの変更であり、コアで物事を壊す可能性があることを知っています。その場合、私はそれを行うことができないかもしれません。しかし、私はそれを実装したら明らかにそれをテストします。

内部の論理を少し見ました Mage_Core_Controller_Varien_Router_Standard::match() しかし、役立つものは何も見られません。

役に立ちましたか?

解決

これは、他の多くのクラスが拡張するクラスであるため、簡単に過負荷にすることはできません(ベースモデルや抽象クラスに似ています)。

この動作を本当に変更したい場合は、ソース全体をコピーして貼り付けて、その中に配置する必要があります。 app/code/local/Mage/Adminhtml/Controller/Action.php.

「適切な」マゼントコンベンションに従って実装することをお勧めします _isAllowed カスタムコントローラークラスのメソッド。サードパーティモジュールを保護するために、上記のアプローチは機能しますが、意図的にアップグレードをより困難にします。 「クリーナー」アプローチは、各特定のルートのコントローラーを書き直すために言及したとおりです。これには多くの労力と時間が含まれる可能性があります。各プロジェクトに適切にラインを描く必要があります。

ライセンス: CC-BY-SA帰属
所属していません magento.stackexchange
scroll top