<global>、<frontend>、<default>、<admin>、<adminthtml>内で<ob​​servers>を宣言するかどうかに違いはありますか?


7

表面的には、すべてが機能しているようです。どちらを選択するかについて、それほど明白ではない影響/結果はありますか?

回答:


5

:Magentoのは3、デフォルトでは「エリア」がありfrontendadminhtmlそしてinstall翻訳やデザインなどのいくつかのものを分離するために使用されます、。

Magentoが初期化されると、領域は一度ロードされて設定さMage_Core_Model_App_Area::load()れます。詳細については、を参照してください。追加の領域が表示されますが、adminこれは使用されていないようです(もうどこか?)。モジュールtestによっては、たとえばによって新しい領域が追加される場合がありEcomDev_PHPUnitます。

オブザーバーもエリアごとに定義されますが、さらに定義<global>すると、すべてのエリアに適用されます。

現在の領域とで定義されたオブザーバーのみglobalが実行されます。グローバルオブザーバーは常に最初に来ます。

オブザーバーを定義することは<default><admin>実際には機能しないはずです。


ご回答有難うございます。「インストール」エリアを書きました。「グローバル」エリア(Mage_Core_Model_App_Area :: AREA_GLOBAL)ですか?
fris 2015

1
いいえ、installつまり、Magentoのインストールウィザードで使用されます。見てみましょうMage_Install_Controller_Action(実際には、これはテーマにのみ使用されているように見えるため、特別にオブザーバーを作成することはできませんinstall
Fabian Schmengler

11

間にオブザーバーを呼び出すと<frontend></frontend>、そのオブザーバーイベントはフロントエンドでのみ実行されます。その間<adminhtml></adminhtml>に書き込みを行うと、バックエンドでのみ実行され、その間に書き込むと<global></global>、オブザーバーイベントはフロントエンドとバックエンドの両方で機能します。

たとえば、「core_block_abstract_prepare_layout_after」という1つのイベントを受け取ります

ケース1:-

<adminhtml>
    <events>
      <core_block_abstract_prepare_layout_after>
      </core_block_abstract_prepare_layout_after>
    </events>
</adminhtml>

オブザーバーイベント"<core_block_abstract_prepare_layout_after>" はバックエンドでのみ機能します

ケース2:-

<frontend>
    <events>
      <core_block_abstract_prepare_layout_after>
      </core_block_abstract_prepare_layout_after>
    </events>
</frontend>

オブザーバーイベント"<core_block_abstract_prepare_layout_after>" はフロントエンドでのみ機能します

ケース3:-

<global>
    <events>
      <core_block_abstract_prepare_layout_after>
      </core_block_abstract_prepare_layout_after>
    </events>
</global>

オブザーバーイベント"<core_block_abstract_prepare_layout_after>" はフロントエンドとバックエンドでのみ機能します

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.