An der Oberfläche scheinen alle zu funktionieren. Gibt es weniger offensichtliche Implikationen / Konsequenzen der Wahl einer über die andere?
An der Oberfläche scheinen alle zu funktionieren. Gibt es weniger offensichtliche Implikationen / Konsequenzen der Wahl einer über die andere?
Magento hat standardmäßig drei "Bereiche" : frontend
, adminhtml
und install
, mit denen verschiedene Dinge wie Übersetzungen und Designs getrennt werden.
Der Bereich wird einmal geladen und festgelegt, wenn Magento initialisiert wird. Weitere Mage_Core_Model_App_Area::load()
Informationen finden Sie unter. Sie werden einen zusätzlichen Bereich bemerken admin
, aber es scheint, dass dieser nicht mehr verwendet wird (irgendwo mehr?). Einige Module fügen möglicherweise neue Bereiche hinzu, z. B. test
von EcomDev_PHPUnit
.
Beobachter werden auch pro Bereich definiert, aber zusätzlich können Sie dann in definieren <global>
, dass sie in allen Bereichen gelten.
Es werden nur Beobachter ausgeführt, die im aktuellen Bereich und in definiert sind global
. Globale Beobachter stehen immer an erster Stelle.
Das Definieren eines Beobachters in <default>
oder <admin>
sollte eigentlich überhaupt nicht funktionieren.
install
- es wird während des Magento-Installationsassistenten verwendet. Schauen Sie sich das anMage_Install_Controller_Action
(eigentlich scheint dieses nur für das Thema verwendet zu werden, daher können Sie keine Beobachter speziell für erstelleninstall
)Wenn Sie zwischenzeitlich
<frontend></frontend>
Beobachter aufrufen, wird dieses Beobachterereignis nur im Frontend ausgeführt. Wenn Sie dazwischen schreiben<adminhtml></adminhtml>
, wird es nur im Backend ausgeführt. Wenn Sie dazwischen schreiben,<global></global>
funktioniert das Beobachterereignis sowohl im Frontend als auch im Backend.Nehmen Sie zum Beispiel ein Ereignis mit dem Namen "core_block_abstract_prepare_layout_after".
Fall 1:-
Das Beobachterereignis
"<core_block_abstract_prepare_layout_after>"
funktioniert nur im BackendFall 2: -
Das Beobachterereignis
"<core_block_abstract_prepare_layout_after>"
funktioniert nur im FrontendFall 3: -
Das Observer-Ereignis
"<core_block_abstract_prepare_layout_after>"
funktioniert nur im Frontend und Backendquelle