logo

Select Sidearea

Populate the sidearea with useful widgets. It’s simple to add images, categories, latest post, social media icon links, tag clouds, and more.
hello@youremail.com
+1234567890
 

EC-CUBE4 PluginManagerについて

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とします。)

EC-CUBE4プラグインの雛形の作成方法はこちら

 

②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: ほげほげのレコードも登録されます。