コマンドでプラグインの雛形を生成することができます。
$ bin/console eccube:plugin:generate
対話形式でname, code, verを入力すると app/Plugin/[code]/ 以下に雛形となるファイル類が生成されます。
EC-CUBE 4.0-beta版では要求されませんでしたが、EC-CUBE 4.0-beta2からは composer.json ファイルが必須のようです。
{ "name": "ec-cube/Test Plugin", "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' %}