- 追加された行はこの色です。
- 削除された行はこの色です。
[[Magentoめも]]
*Magento2 イベントをObserverで検知する [#r5ce9026]
Magento2内ではいわゆるフックポイントがあちこちに仕掛けられています。
例えばこんな感じ。
$this->_eventManager->dispatch('sales_order_place_after', ['order' => $this]);
Observerにてこれをフックし、拡張することができるようです。
*events.xmlの定義 [#kcac2c9e]
vendor\magento\module-catalog\Controller\Category\View.php に設定されている catalog_controller_category_init_after イベントをフックします。
events.xml を設置するパスは管理画面だと adminhtml、公開画面だと frontend となります。
etc/frontend/events.xml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd">
<event name="catalog_controller_category_init_after">
<observer name="yassujp_helloworld_catalog_controller_category_init_after" instance="Yassujp\HelloWorld\Observer\MyObserver" />
</event>
</config>
*Observerクラスの実装 [#ia13abbf]
Observerクラスは Observer フォルダ以下に設置します。
dispatchで渡された変数は $observer->getEvent() で取得できるみたいです。
Observer/MyObserver.php
<?php
namespace Yassujp\HelloWorld\Observer;
use Magento\Framework\Event\ObserverInterface;
class MyObserver implements ObserverInterface
{
public function __construct()
{
}
public function execute(\Magento\Framework\Event\Observer $observer)
{
$category = $observer->getEvent()->getCategory();
echo $category->getName().' Local';
}
}
これでカテゴリページを閲覧したときに、左上に表示している カテゴリ名 Local と表示されていることが確認できます。
*既存のObserverの無効化 [#r2bd5154]
コアに定義されているObserverを無効化することもできるようです。~
typeの値に disabled を指定してみましょう。
参考~
http://devdocs.magento.com/guides/v2.0/extension-dev-guide/events-and-observers.html