下記のページのチュートリアルをやった。
要約という訳でもないが、自分なりにプラグインの作成方法をまとめておく。
プラグインの作成方法
新規にテーブルを作成してプラグインを作成するためには、下記のことをやる。
- プラグイン使用に必要な設定ファイルの作成
- config.yml
- プラグイン名や使用するテーブル/イベントクラス/サービスプロバイダーを定義。
- event.yml
- フックポイントとその時に使用するイベントクラスのメソッドを定義。
- PluginManager.php
- プラグインのインストール時や有効化した時に実行する処理を定義。
- config.yml
- ServiceProvider
- レポジトリを登録する
- DB関係のファイル
- dcm.yml
- テーブル定義を記述する。
- Entity
- テーブル定義に沿ってゲッター/セッターを定義。
- Repository
- (チュートリアルでは使用していないが)対象のEntityを取得する処理を記述する。
- マイグレーションファイル
- DBに対してテーブルの作成などを記述するファイル
- dcm.yml
- Event.php
- event.ymlで定義されたフックポイントに対して、実行する処理を記述する。
なお、チュートリアルではフォームはEvent.phpの中に定義している。
プラグインのテーブルの内容を画面表示するためにやること
先述のページのStep3冒頭にも同様のことが記載されている。
- config.yml でイベントに使用するイベントクラス名を指定する。
- event.yml で、利用するフックポイントと、イベントクラスのメソッド名を指定する。
- event.yml で指定したイベントクラスとイベントクラスのメソッドを作成する。
それぞれのサンプル。
config.yml
name: カテゴリコンテンツプラグイン2
code: CategoryContent2
version: 1.0.0
orm.path:
- /Resource/doctrine
event: CategoryContent2Event
event.yml
admin.product.category.index.initialize:
- [onAdminProductCategoryIndexInit, NORMAL]
CategoryContent2Event.php
<?php
namespace Plugin\CategoryContent2;
use Eccube\Event\EventArgs;
class CategoryContent2Event
{
/** @var \Eccube\Application $app */
private $app;
public function __construct($app)
{
$this->app = $app;
}
public function onAdminProductCategoryIndexInit(EventArgs $event)
{
// フックポイントで使用する処理を記述する
}
}
イベントファイルにフックポイントで使用する処理を記述する。