LoginSignup
1
3

More than 3 years have passed since last update.

ec-cube4でプラグイン開発を始める|プラグインの新規作成

Last updated at Posted at 2019-10-30

新機能を実装する際は、依存しないようにするためec-cube4では追加機能はプラグインとして開発することができる。

今回はその手順をメモしておく。
公式のドキュメント

プラグインの作成


bin/console eccube:plugin:generate

EC-CUBE Plugin Generator Interactive Wizard
===========================================

name [EC-CUBE Sample Plugin]:
> #プラグインの名前

code [Sample]:
> #プラグインのコード名

 ver [1.0.0]:
> #プラグインのバージョン

#問題無ければ最後にOKが出力される
[OK] Plugin was successfully created: [プラグインの名前] [プラグインのコード名] [プラグインのバージョン]

ディレクトリのデフォルト構成は以下のようになる

[プラグインのコード名]
|--Controller
| |--Admin
| | |--ConfigController.php
|--Entity
| |--Config.php
|--Event.php
|--Form
| |--Extension
| |--Type
| | |--Admin
| | | |--ConfigType.php
|--Nav.php
|--Repository
| |--ConfigRepository.php
|--Resource
| |--doctrine
| |--locale
| | |--messages.ja.yaml
| | |--validators.ja.yaml
| |--template
| | |--admin
| | | |--config.twig
|--TwigBlock.php
|--composer.json

各ファイルの役割

プラグイン開発時に新しく出てきたファイルだけメモ。
Controller・Entity・Repositoryなどは割愛。

Nav.php

管理画面にメニューを追加する場合は、こちらに記述する。
今回はカタログの管理メニューを追加した。
ec-cube4決済プラグインを参考にした。

メニューの構造はeccube_nav.yamlを参考にするといいようだ。

/src/app/config/eccube/packages/eccube_nav.yaml

<?php

namespace Plugin\CatalogCrud;

use Eccube\Common\EccubeNav;

class Nav implements EccubeNav
{
    /**
     * @return array
     */
    public static function getNav()
    {
        return [
            'content' => [
                'children' => [
                    'plugin_catalog' => [
                        'name' => 'plugin_catalog.admin.navi',
                        'url'  => 'plugin_catalog_list',
                    ],
                ],
            ],
        ];
    }
}

こちらに記述されているメニューはプラグインが有効の時の表示される。

PluginManager.php

以下の処理の時に独自の処理を加えた場合はこちらに記述する。

  • プラグインのインストール
  • プラグインのアンインストール
  • プラグインの有効化
  • プラグインの無効化

デフォルトではないので作成する必要がある。

デフォルトの各挙動は次の通り。

インストール時の挙動

  • Entityからテーブルの作成
  • Controllerからルーティングの設定
  • Nav.phpからメニューの追加

アンインストール時の挙動

  • Entityで作成されたテーブルの削除
  • Controllerからルーティングの削除
  • Nav.phpからメニューの削除

最後にディレクトリごとファイルが削除された。

有効化にしたときの挙動

  • メニュー表示

無効化にしたときの挙動

  • メニュー非表示

※まだ完全に把握出来ていないので、誤りがある可能性があります。
ご了承ください。

上記以外の処理を追加したい場合には、PluginManager.phpに記述するようだ。

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3