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.4"
    },
    "extra": {
        "code": "Test"
    }
}

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

管理画面にてプラグインのインストールは可能です。
コマンドでの操作は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' %}

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS