EC-CUBE4 PluginManagerについて
PluginManagerとは、プラグインの有効時、無効時などの際の処理を行うために作られるものです。
プラグインに必要なファイルですが、プラグインの雛形にPluginManagerは含まれていないため、自分で作成しなければなりません。
例として、以下の内容でPluginManagerを作成してみます。
①プラグインの雛形作成
②PluginManager.phpを作成し、plg_hoge_plugin_configテーブル(idカラム、nameカラム)およびレコードを作成する。
・実行環境:
Xampp 3.2.4
PHP 7.4.16
MariaDB 10.4.18
・EC-CUBEのインストールフォルダー
C:\develop\eccube-4.0.5
①プラグインの雛形作成
以下の記事をご参照ください。(これより、本ページではプラグイン名とプラグインコード名をHogePluginとします。)
②PluginManager.phpを作成し、idカラム、nameカラムを持ったplg_プラグインコード名(小文字)_configテーブルおよびレコードを作成する。
※その他、雛形のファイルの変更はありません。
C:\develop\eccube-4.0.5\app\plugin\HogePlugin\PluginManager.php
<?php
namespace Plugin\HogePlugin;
use Eccube\Plugin\AbstractPluginManager;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Plugin\HogePlugin\Entity\Config;
use Plugin\HogePlugin\Repository\ConfigRepository;
class PluginManager extends AbstractPluginManager
{
const ADD_CONFIG_NAME = “ほげほげ”;
/**
* @param array $meta
* @param ContainerInterface $container
*/
public function enable(array $meta, ContainerInterface $container) {
$this->createConfig($container);
}
/**
* @param array $meta
* @param ContainerInterface $container
*/
public function disable(array $meta, ContainerInterface $container) {
$this->deleteConfig($container);
}
/**
* @param ContainerInterface $container
*/
public function createConfig(ContainerInterface $container)
{
$em = $container->get(‘doctrine.orm.entity_manager’);
/** @var ConfigRepository $configRepository */
$configRepository = $em->getRepository(Config::class);
$config = $configRepository->get();
if (!$config) {
$config = new Config();
$config->setName($this::ADD_CONFIG_NAME);
$em->persist($config);
$em->flush();
}
}
/**
* @param ContainerInterface $container
*/
private function deleteConfig(ContainerInterface $container) {
$configRepository = $container->get(ConfigRepository::class);
$config = $configRepository->findOneBy([“name” => $this::ADD_CONFIG_NAME]);
if (is_null($config)) return;
$em = $container->get(‘doctrine.orm.entity_manager’);
$em->remove($config);
$em->flush($config);
}
}
これで、DBにplg_プラグインコード名(小文字)_configテーブルが作成され、name: ほげほげのレコードも登録されます。