[[EC-CUBEめも]]

*プラグインジェネレーター [#ac79295c]

EC-CUBE3.0.13未満であれば無料のプラグインを導入することでひな形を作成できます。~
http://www.ec-cube.net/products/detail.php?product_id=1022

EC-CUBE3.0.13以降であればプラグインジェネレータが実装されていますので、こちらを利用することでひな形を作成できます。~
[[プラグインジェネレータの利用方法:http://ec-cube.github.io/plugin_tutorial-generate]]

**プラグインジェネレーターの実行開始 [#ld741247]

 $ php app/console plugin:develop generate

**migrationファイルの生成 [#kab3890f]

 $ php app/console migrations:generate

src\Eccube\Resource\doctrine\migration\Versionxxxxxxxxxxxxxx.php が生成されるので、app\Plugin\プラグインフォルダ\Resource\doctrine\migration\ へ移動します。~
中身は自分で書きます。

**データベースからdcm.ymlを生成 [#m4dbc97d]

ymlファイルを書くのは面倒なので、先にデータベースにテーブルを作成しておき、それをもとにymlファイルを生成します。~
テーブル名が plg_table であれば、指定は PlgTable になります。

 $ vendor/bin/doctrine orm:convert:mapping --namespace="Eccube\Entity\\" --from-database yml --filter=PlgTable app/Plugin/プラグインフォルダ/Resource/doctrine/

Eccube.Entity.PlgTable.dcm.yml ファイルが生成されますが、命名規則が異なるので、リネームします。~
Plugin.プラグインフォルダ.Entity.PlgTable.dcm.yml

ファイルの内容もパスの修正やrepositoryClassを追記します。

FOREIGN KEYを使用して DtbCustomer などとなっている箇所は Customer に修正します。

ファイルがありませんなどのエラーが出る場合はzipをwindowsで解凍したことなどが原因でシンボリックリンクが切れているかもしれません。~
特に vagrant rsync-auto としている場合はハマるかもしれません。~
config.vm.synced_folder に vendor/ を追加しておいた方がいいかも。~
tar.gz形式のファイルを解凍して使用してみましょう。

参考
-http://qiita.com/chihiro-adachi/items/0c781e68d1bcbab3c620
-http://docs.symfony.gr.jp/symfony2/cookbook/doctrine/reverse_engineering.html

**Entityの生成 [#hf3bb172]

dcm.ymlを生成した時点でプラグインをインストールしてテーブルを作成した状態にしておくと良さげ。~
さもないと No Metadata Classes to process. などと怒られる。

 $ vendor/bin/doctrine orm:generate:entities --filter=Plugin\\プラグインフォルダ\\Entity\\EntityName --extend=Eccube\\Entity\\AbstractEntity app/

**Repositoryの生成 [#dc7fd18e]

 $ vendor/bin/doctrine orm:generate:repositories --filter=Plugin\\プラグインフォルダ\\Entity\\EntityName app/

**プラグインのインストール [#fcbe4208]

 $ php app/console plugin:develop install --code プラグイン

**プラグイン一覧で設定リンクを表示させる [#jb43a3d9]

ServiceProviderに以下の形式で記述してやると表示されるようになります。

config.yml 内 code: PluginSample としている場合

     public function register(BaseApplication $app)
     {
         // Config
         $app->match('/' . $app['config']['admin_route'] . '/plugin/PluginSample/config', 'Plugin\PluginSample\Controller\Admin\ConfigController::index')
             ->bind('plugin_PluginSample_config');
     }


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