タグ付けされた質問 「interceptor」

3
Magento 2:インタラクションの前後/前後のプラグイン
Magento 2で、「around」プラグインを作成するとき public function aroundRenderResult( \Magento\Framework\Controller\ResultInterface $subject, \Closure $proceed, ResponseHttp $response ) { //... $proceed($response); //... } 渡されたメソッドを呼び出し/呼び出すことで、実際の元のメソッドの呼び出しで終了するプラグインの周りの次のステップに進むことができます$proceed。これは、PHPフレームワークのミドルウェア実装でよく見られる一般的なデザインパターンです。 ただし、実装の詳細に多少の混乱があります。具体的には 場合は、に加えてaroundPlugin、オブジェクト/クラスが持っているbeforeかafter、定義されたプラグインをするとき、彼らはプラグイン周りのチェーンに関連して火災のですか? すなわち、すべてのbeforeメソッドは、Aroundプラグインメソッドが起動する前に起動しますか?または、プラグインが最終的な実際の実際のメソッドが起動する前にのみ起動しますか? 私が突き止めようとしている特定の問題は、Magentoがフルページキャッシュモードのときに、Magento 2フロントコントローラーのディスパッチメソッドにプラグインを接続できないように見えることです。フルページキャッシュは、を呼び出さない aroundプラグインによって動作します$proceed($response)。私はこれらのプラグインを取り巻くコードのいくつかを掘り下げてみましたが、そのプラグインがどのように機能するかを知らずにシステムを推論することは困難であることがわかりました。 つまり、dev docsページの説明は、この1つの特定のインスタンスでは不正確であるように見えます。ドキュメントが間違っているのか、これが最近導入されたバグなのか、エッジケースなのか、プラグインの設定が間違っているのかは不明です。 この優先順位付けがどのように機能するのか、直接観察することにより、または文化的知識により、誰もが知っていますか?

1
Magento 2:var / generationのInterceptorsファイルとは何ですか?
だから私はいくつかのInterceptor.phpファイルに気づいたvar/generation このフォルダには、次の目的でオンザフライで作成された生成クラスが含まれていることを知っています。 工場 プロキシ プラグイン Interceptorファイルはプラグインにリンクされていると思いますが、それらのファイルがどのように生成されるか分からないことがあります。たとえば、私は持ってvar/generation/Magento/Framework/App/Response/Http/Interceptor.phpいますが、このファイルは既存のクラスと一致しないようです。 だから私はInterceptor.phpファイルがどのように生成されるかについてよく説明されたワークフローを探していますか?

3
Magento 2の「インターセプト可能/プラグイン可能」なクラス
日付:2015年5月30日(Magento 2の性質の変化を考慮)。 Magento 2は、インターセプターパターンを介して実装されたプラグインコンセプトを導入しました。 ドキュメントから明らかでないのは、Magentoのどのクラスとオブジェクトが「インターセプト可能」なのかということです。つまり、次のようなXMLを使用してプラグインを構成します <config> <type name="{ObservedType}"> <plugin name="{pluginName}" type="{PluginClassName}" sortOrder="1" disabled="true"/> </type> </config> ただし、として有効なクラスは明確ではありませんObservedType。この古いwikiの記事は、それが言うときにいくつかの手がかりを提供します プラグイン機能は適用されないことに注意してください-依存性注入なしで作成されたクラス、つまり、演算子newを直接使用して作成されたクラス ある任意の傍受することが可能な依存性注入を経て作成されたオブジェクトは?メソッドでObservedType提供されるタイプヒントである必要がありますか__construct、それとも他の何かである必要がありますか? 主に、Magento 2インターセプターを使用する前に、Magento 2インターセプターでできることとできないことを回避しようとしています。


1
Magento 2:カスタムコントローラーがインターセプターを生成するのはなぜですか?
最近、テストモジュールの基本的なルーティング構成を作成しました <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../lib/internal/Magento/Framework/App/etc/routes.xsd"> <router id="standard"> <route id="helloworld" frontName="helloworld"> <module name="Pulsestorm_Helloworld" /> </route> </router> </config> でコントローラファイルを作成しました app/code/Pulsestorm/Helloworld/Controller/Index/Index.php すべてが期待どおりに動作しますが、Magentoが新しいコントローラーのインターセプターを自動的に作成したことを知って驚きました。 var/generation/Pulsestorm/Helloworld/Controller/Index/Index/Interceptor.php コントローラーのプラグインを構成しなかったため、Magentoがインターセプターを生成した理由について少し混乱しました。 Magento 2が新しいコントローラーのインターセプターを自動的に作成するのはなぜですか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.