EC-CUBE3のプラグイン

プラグインにできること

・新規ページの作成

・既存機能の変更・拡張

フックポイントとは?

特定の処理の前後に処理を介入させられる仕組み。

フックポイントには2種類ある。

一つは、「Middleware」で、

アプリケーションの開始・終了時/コントローラーの呼び出し・終了時/決済処理時に処理を介入することげ出来るし、すべてのControllerに対して介入が出来る。

もう一つは、「FilterResponseEvent」である、

Responseが返却され描画される直前のHTTP HeaderやBodyを書き換えることが出来る。HTMLだけでなく、JSONで返却したいなどの変更も可能。

ユーザ

[Appication::run()]

↓ ◯ フックポイント―Middlewareアプリ処理前

[ProductController::edit()] (アプリ処理)

↓ ◯ フックポイント―Middlewareアプリ処理後

[Application::render()] (レンダーイベントとも呼ぶ)

↓ ◯ フックポイント―FilterResponseEvent

 

※ レンダーイベントとは英語でrender event、renderとは「描画する」の意味。

 

フックポイントの命名規約

・アプリケーション全体のフックポイント

eccube.event.app.{ before | after }

・コントローラーイベントのフックポイント

eccube.event.controller.{ルーティング名}.{before | after | finish }

・レンダーイベントのフックポイント

eccube.event.render.{ルーティング名}.before

※ルーティング名

src/Eccube/ControllerProvider/FrontControllerProvider.php

src/Eccube/ControllerProvider/AdminControllerProvider.php内で定義されています。

bind()の引数がルーティング名になる。

$c->match(‘/’, ‘¥Eccube¥Controller¥Admin¥AdminController::login’)->bind(‘admin_login’);

EC-CUBE3インストールデフォルトなら、例えば、お問い合わせ画面がcontactとして、以下のように定義されている。

以下のコマンドで定義済みルーティング一覧をコンソールで表示することも可能。

 

フックポイントで処理を介入させるには

 

フックポイントには2つのパターンが有ります。

一つは、Middlewareによる方法と、もう一つは、FilterResponseEventによる方法です。

Middlewareを使用する場合、

アプリケーションの開始・終了時に処理を介入させることが出来ます。

まず、event.ymlに利用するフックポイント・メソッド名・優先順位を記述する。

 

 

FilterResponseEventを使用する場合は、

描画されるコンテンツや、ヘッダを書き換えることが出来る。

また、管理画面のナビゲーションを拡張したり出来る。

 

入力フォームの拡張

 

FormEventを使って、フォーム送信時の処理の介入することが出来る。

/src/Eccube/Form/Typeに定義されているすべてのフォームに対して介入が可能である。

介入は以下のタイミングで行うことが出来る。

・onPreSetData:$form->setData()の前
・onPostSetData:$form->setData()の後
・onPreSubmit:$form->submit()の前
・onSubmit:?????????(参考URL)
・onPostSubmit:$form->submit()の後

(/src/Eccube/Event/FormEventSubscriber.phpを参照)

プラグインをインストールすると

プラグインをインストールするとZIPされたソースが

/app/Plugin/{プラグイン名}内に移動される。