- 2018.10.22
- EC-cube
【EC-cube3】プラグイン開発に向けて初心者がいろいろやってみる(2):新規ページの作成

取りあえず、各ファイルの役割を理解するために、なるべくシンプル(’ミニマムな構成?)なものを作ろうと思いましたので、今回は「新規ページの作成」をやってみて記事にしたいと思います。
- 〇プラグインコード「TestPlugin」
- 〇管理画面内、「http://[EC-CUBEインストール先]/admin/test」というURLで新規ページを表示する。
ファイル構成
どんなファイル構成になるかは、プラグインに求める機能によると思いますが、最低限必要なファイルは下記の2つのようです。
- ・config.yml
- コンフィグファイル。
- プラグインの設定を記述するファイル。このファイルがないとインストールすらさせてもらえない必須ファイル。
- ・PluginManager.php
- プラグイン全体を制御するファイル。
- プラグインのインストーラー。必須ファイル。
上記2ファイルは準備されていることを前提として、今回は「新規ページ作成」に必要な作業を進めていきます。
必須ファイルの設定についてはこちら。
新規ページ作成に必要な手順
- 1.Controllerの作成
- 2.ServiceProviderでルーティングを定義
- 3.config.ymlにServiceProviderを追記
- 4.(twigテンプレートの作成)
1.Controllerの作成
「app/Plugin/TestPlugin/Controller」配下に、Controllerを作成します。
今回は管理画面内にページを作成しようと思いますので、app/Plugin/TestPlugin/Controller/Admin ファイル名を「TestPluginController.php」
<?php
namespace Plugin\TestPlugin\Controller\Admin;
use Eccube\Application;
use Symfony\Component\HttpFoundation\Request;
/**
* Class TestPluginController admin.
*/
class TestPluginController
{
public function index(Application $app, Request $request)
{
return 'This is a Test';
}
}
2.ServiceProviderでルーティングを定義
app/Plugin/TestPlugin/ServiceProvider/TestPluginServiceProviderに、ルーティングを定義します。 registerメソッド内に、以下のように記述をしてください。
<?php
namespace Plugin\TestPlugin\ServiceProvider;
use Eccube\Application;
use Silex\Application as BaseApplication;
use Silex\ServiceProviderInterface;
class TestPluginServiceProvider implements ServiceProviderInterface
{
public function register(BaseApplication $app)
{
$app->match(
'/'.$app['config']['admin_route'].'/test',
'Plugin\TestPlugin\Controller\Admin\TestPluginController::index'
)->bind('test');
}
public function boot(BaseApplication $app)
{
}
}
3.config.ymlにServiceProviderを追記
config.ymlにServiceProviderを追記(4行目~5行目)します。
name: テストプラグイン
code: TestPlugin
version: 1.0.0
service:
- TestPluginServiceProvider
取りあえず、ここまでで新規ページを表示させることはできます。
「http://[EC-CUBEインストール先]/admin/test」へアクセスすると、「This is aTest」と表示されると思います。
4.(twigテンプレートの作成)
次は、テンプレートを使用したページを作成してみます。
今回は管理画面内のページなので、app/Plugin/TestPlugin/Resource/template/admin配下に、twigテンプレートを作成します。
ファイル名は、test.twigとしてください。
例えばこんな感じです。
{% extends 'default_frame.twig' %}
{% block main %}
<div class="row">
<div class="col-md-12">
<p class="text-danger">こんにちわ</p>
</div>
</div>
{% endblock %}
twigファイルと他のファイルを繋げてあげる必要があるのでコントローラーを編集します。
twigテンプレートを使用する場合のController
<?php
namespace Plugin\TestPlugin\Controller\Admin;
use Eccube\Application;
use Symfony\Component\HttpFoundation\Request;
/**
* Class TestPluginController admin.
*/
class TestPluginController
{
public function index(Application $app, Request $request)
{
//return 'This is a Test';
return $app->render('TestPlugin/Resource/template/admin/test.twig', array());
}
}
必須ファイルの設定について
config.yml
プラグインを動作させるのに、最低限必要な内容は下記の3つです。
name: [プラグイン名]
code: [プラグインコード]
version: x.x.x
PluginManager.php
「インストール」「アンインストール」「有効」「無効」「アップデート」のタイミングに行っておきたい処理があれば、下記の該当箇所に記載します。
特になければ下記のまま(プラグインコードは編集してください)で大丈夫です。
<?php
namespace Plugin[プラグインコード];
use EccubeApplication;
use EccubePluginAbstractPluginManager;
class PluginManager extends AbstractPluginManager
{
/**
* プラグインインストール時の処理
*
* @param $config
* @param Application $app
* @throws Exception
*/
public function install($config, Application $app)
{
}
/**
* プラグイン削除時の処理
*
* @param $config
* @param Application $app
*/
public function uninstall($config, Application $app)
{
}
/**
* プラグイン有効時の処理
*
* @param $config
* @param Application $app
* @throws Exception
*/
public function enable($config, Application $app)
{
}
/**
* プラグイン無効時の処理
*
* @param $config
* @param Application $app
* @throws Exception
*/
public function disable($config, Application $app)
{
}
/**
* プラグイン更新時の処理
*
* @param $config
* @param Application $app
* @throws Exception
*/
public function update($config, Application $app)
{
}
}