コアコントローラーのpreDispatchメソッドをオーバーライドする必要があります。コアコントローラーはから継承しますMage_Checkout_Controller_Action
。これには、呼び出す必要のあるpreDispatchメソッドがあります。オーバーライドしたいコアコントローラーから拡張しているため、を呼び出すだけではできませんparent::preDispatch()
。これは、回避しようとしている機能を取り込むためです。
私の質問は-継承チェーンで2レベル高いオーバーライドされたメソッドを呼び出すにはどうすればよいですか、またはこれを間違った方法で行っているのですか?
更新
どうやらこれは動作します:
Mage_Checkout_Controller_Action::preDispatch();
(その方法は静的ではありませんが、毎日新しいことを学んでいると思います。)
今私の質問は:私がオーバーライドしているクラスからすべての機能をコピーする必要なしにこれを行うより良い方法はありますか?
私がこれを試みた理由は、顧客がマルチシッピングチェックアウトを行った後にMagentoにアドレス割り当てを記憶させ、その後に去ろうとしたため、この道を進んでいたためです。(FWIW、私は正しい方向に進むためにリンクされた記事が素晴らしいことを発見しましたが、これを機能させるために実行する必要がある手順に関しては多くの欠けているようです)。
私がオーバーライドしているコントローラーは、回避する必要があるMultishipping IndexActionへのリダイレクトを持つコアMultiShippingControllerです。少し補足すると、私はこの機能をほぼ完全に取得しましたが、いくつかの問題を除いて(カートへの最初のアイテムの追加とMage_Sales_Model_Quote_Item-> getQuoteItem()がaddresses.phtmlテンプレートでnullを返すことに関して)、それは完全に異なる議論です)。
parent::someMethod()
静的ではないように「静的」ではなく$this
、現在のクラスのインスタンスの適切なコンテキストでメソッドを呼び出す前に、トラバースする継承ツリーの一部を指定します。