こちら『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) でセットしなおしてあげます。