【ECCUBE3プラグイン開発】イベントフックについて


こちら『EC-CUBEのプラグインを作る(3.0.9向け)』を参考に記載していきます。イベントフックはconfig.ymlでイベントクラスを定義し、event.ymlでフックとなるイベント名と関数名を登録したら、関数定義を行います。

config.yml

name: カテゴリコンテンツプラグイン
code: CategoryContent
version: 1.0.0
event: CategoryContentEvent 
event: xxxx という記載で、イベントフックされた先のクラスを指定しています。
event.yml
admin.product.category.index.initialize: 
 - [onAdminProductCategoryInit, NORMAL] 

この定義では、function onAdminProductCategoryInit(EventArgs $event) を定義する事となります。
イベントフックは引数として、『EventArgs $event』を持ちます。
この引数の中身は、dispatchコールされる直前で設定して決めているようです。
/src/Controller/各コントローラ.php の ソース内では、$app[‘eccube.event.dispatcher’]->dispatch(イベント名定義, $event) となっています。
どのようなパラメータが来るのかは、ECCUBEオリジナルの dump() を利用して実行させてパラメータ内部を表示させるか、上記dispatchコール直前の変数を確認する方法があります。

パラメータを取得する

dispatchコール直前の$event 設定部分を見ると、パラメータがkey – value 形式で格納されていることが分かります。以下の様に、keyを指定することでパラメータを取得することができます。

$parameter = $event->getArgument(‘Order’);

また、処理中に追加したいパラメータがあれば setArgument($parameter) でセットしなおしてあげます。