雛形の生成†コマンドでプラグインの雛形を生成することができます。 $ 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 ファイルが必須のようです。 {
"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 * プラグインのインストール†管理画面にてプラグインのインストールは可能です。 # インストール $ 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 と指定します。 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' %}
参考 |