EC-CUBEめも

雛形の生成

コマンドでプラグインの雛形を生成することができます。

$ bin/console eccube:plugin:generate

対話形式でname, code, verを入力すると app/Plugin/[code]/ 以下に雛形となるファイル類が生成されます。

EC-CUBE 4.0-beta版では要求されませんでしたが、EC-CUBE 4.0-beta2からは config.yml に代わって composer.json ファイルが必須のようです。
description がプラグイン名称になり、指定が無い場合は code が採用されます。

{
    "name": "ec-cube/Test",
    "description": "テストプラグイン",
    "version": "1.0.0",
    "type": "eccube-plugin",
    "require": {
        "ec-cube/plugin-installer": "~0.0.6"
    },
    "extra": {
        "code": "Test"
    }
}

プラグインを圧縮する場合はフォルダを含めないように注意します。

$ cd app/Plugin/Test
$ tar --exclude ".git" -cvzf ../Test-1.0.0.tar.gz *

プラグインのインストール

管理画面にてプラグインのインストールは可能です。
コマンドでの操作はcodeを指定し、以下となります。

# インストール
$ bin/console eccube:plugin:install --code=[code]

# 有効化
$ bin/console eccube:plugin:enable --code=[code]

# 無効化
$ bin/console eccube:plugin:disable --code=[code]

# 削除
$ bin/console eccube:plugin:uninstall --code=[code]

# 削除(プラグインのファイルも削除する場合)
$ bin/console eccube:plugin:uninstall --code=[code] --uninstall-force=true

プラグイン固有設定画面

プラグイン一覧画面からプラグイン固有の設定画面を開きたい場合、Routeの name は小文字で [code]_admin_config と指定します。
コマンドで雛形を生成した場合は plugin_Test_config となっており設定リンクが表示されないので注意が必要です。
またtwigのframe指定を修正する必要があります。

app/Plugin/Test/Controller/Admin/ConfigController.php

<?php

namespace Plugin\Test\Controller\Admin;

use Eccube\Controller\AbstractController;
use Plugin\Test\Form\Type\Admin\ConfigType;
use Plugin\Test\Repository\ConfigRepository;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use Symfony\Component\HttpFoundation\Request;

class ConfigController extends AbstractController
{
    /**
     * @var ConfigRepository
     */
    protected $configRepository;

    /**
     * ConfigController constructor.
     *
     * @param ConfigRepository $configRepository
     */
    public function __construct(ConfigRepository $configRepository)
    {
        $this->configRepository = $configRepository;
    }
    /**
     * @Route("/%eccube_admin_route%/test/config", name="test_admin_config")
     * @Template("@Test/admin/config.twig")
     */
    public function index(Request $request)
    {
        $Config = $this->configRepository->get();
        $form = $this->createForm(ConfigType::class, $Config);
        $form->handleRequest($request);

        if ($form->isSubmitted() && $form->isValid()) {
            $Config = $form->getData();
            $this->entityManager->persist($Config);
            $this->entityManager->flush($Config);
            $this->addSuccess('登録しました。', 'admin');

            return $this->redirectToRoute('test_admin_config');
        }

        return [
            'form' => $form->createView(),
        ];
    }
}

app/Plugin/Test/Resource/template/admin/config.twig

{% extends '@admin/styleguide_frame.twig' %}

{% extends '@admin/default_frame.twig' %}

参考
EC-CUBE4系でのプラグインエラーの原因と予防対策


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2021-09-19 (日) 19:09:22