Labo

EC-CUBE3 分室

【3.0.13】プラグインジェネレータ

2017年01月14日 / 投稿者名:chiharu


少しづつプラグインについていろいろ調べていますが、今回は実際の作業ではなく3.0.13 から追加された機能について調べたいと思います。
EC-CUBE 3.0.13 から、プラグイン作成者向けの機能として「プラグインジェネレータ」が追加されたと聞きました。
今後のプラグイン作成においてベースとなるファイル群を作成するためにも今のうちに見ておきたいと思います。
 
まず、大前提ですがプラグインジェネレーターは「プラグイン開発用コンソールコマンド」にて動作します。
EC-CUBE 3.0.9 から追加されたコンソール用の開発コマンドです。
プラグインを作成する人であればおそらくはコンソール上での作業を行います。
知っておくと便利な機能です。
 ※ 偉そうなことを云っても今までは「インストール」や「有効」をコマンドラインから行う程度ですが(笑)
ということで早速使用してみたいと思います。
 
1. プラグインジェネレータを実行する。
  まずは実行してみないと話になりません。
  EC-CUBE のインストールディレクトリに移動して以下のコマンドを実行します。

php app/console plugin:develop generate

  今までコンソールから行ってきた install などとさほど変わりませんね。
   ※ ちなみに公式の紹介サイトでは「genereate」となっていますが確認すると「generate」が正しいようです。
     (2017/01/18 時点)
 
2.プラグイン名の入力
  ジェネレーター実行すると以下の内容がコンソール上に表示されます。

------------------------------------------------------
---Plugin Generator
---[*]You can exit from Console Application, by typing quit instead of typing another word.
------------------------------------------------------

[+]Please enter Plugin Name
Input[1] :

  まずはプラグインの名称を決めることになります。
  プラグイン名を入力してみましょう。
 
3.プラグインコードの入力
  プラグイン入力後は以下の内容が表示されます。

[+]Please enter Plugin Name (only pascal case letters numbers are allowed)
Input[2] :

  入力ミスかと思いましたがこれは表記ミスの様です。
  実際には「Please enter Plugin Name」が「Please enter Plugin Code」と表示されることが正しいようです。
  ということで英数字のみ、かつ、1文字目は必ず半角英字の大文字という命名規則に沿ってプラグインコードを入力します。
 
4.プラグインバージョンの入力
  プラグインコード入力後は以下の内容が表示されます。

[+]Please enter version (correct format is x.y.z)
Input[3] :

  プラグインバージョンの事の様です。
  まぁ、特に規則が無ければ 0.0.1 でよいのかと思います。
 
5.作成者の入力
  プラグインバージョン入力後は以下の内容が表示されます。

[+]Please enter author name or company
Input[4] :

  作成者か作成会社の入力ですね。
  ジェネレーターと云うだけあって至れり尽くせりですがちょっと面倒ですね。
 
6.サポート状態の入力
  作成者入力後は以下の内容が表示されます。

[+]Do you want to support old versions too? [y/n]
Input[5] :

  旧バージョンのサポートを行うかということですね。
  3.0.9以降はプラグインの作りが変わるため配慮がひつようということなのでしょう。
  入力内容としては以下の2択の様です。
   3.0.8以下も対応する場合「y」
   3.0.9以上のみ対応の場合「n」
  今後は 3.0.9 以降ばかりになると思いますし、バージョンアップも比較的簡単な現状では大半は「n」になるのではないでしょうか。
 
7.共通イベント設定
  サポート状態入力後は以下の内容が表示されます。

[+]Please enter site events(you can find documentation here http://www.ec-cube.net/plugin/)
Input[6] :

  共通イベントの設定が可能なようです。
  正直この時点で必要なイベントがすべて把握できているものなのでしょうか。
 
  仕様をしっかりまとめて作る場合にはここで入力したほうが良いのでしょうか。
  ちなみにイベントの一部を入力すると(例えばapp)入力内容が含まれるイベントの一覧が表示されます。
  仕様をしっかり作っている場合はイベント名を把握していると思われるので謎な機能です・・・
 
  とりあえず何も入力せず「enter」を押すことで設定を行わないこともできるようです。
 
8.フロントや管理イベントの設定
  共通イベント入力後は以下の内容が表示されます。

[+]Please enter hook point, sample:front.cart.up.initialize
Input[7] :

  フロントや管理イベントの設定が可能なようです。
  やることは共通イベントの設定と変わりません。
  慣れてくると便利な機能なのかな・・・
  とりあえず、こちらも入力せず「enter」を押してみました。
 
9.
  フロントや管理イベントの入力後は以下の内容が表示されます。

---Entry confirmation
[+]Plugin Name:  ナックウェブテスト007
[+]Plugin Code:  NakwebTest007
[+]Version:  0.0.1
[+]Author:  NAKWEB
[+]Old version support:  No
[+]Site events:
[+]Hook points:

[confirm] Do you want to proceed? [y/n] :

  入力内容の確認ですね。
  問題無ければ「y」を入力する形です。
  
 
10.作成完了
  内容確認が終わると以下の内容が表示されます。

[+]File system

 this files and folders were created.
 - /var/www/html/public_html/app/Plugin/NakwebTest007
 - /var/www/html/public_html/app/Plugin/NakwebTest007/ServiceProvider
 - /var/www/html/public_html/app/Plugin/NakwebTest007/Controller
 - /var/www/html/public_html/app/Plugin/NakwebTest007/Form/Type
 - /var/www/html/public_html/app/Plugin/NakwebTest007/Resource/template/admin
 - /var/www/html/public_html/app/Plugin/NakwebTest007/config.yml
 - /var/www/html/public_html/app/Plugin/NakwebTest007/PluginManager.php
 - /var/www/html/public_html/app/Plugin/NakwebTest007/ServiceProvider/NakwebTest007ServiceProvider.php
 - /var/www/html/public_html/app/Plugin/NakwebTest007/Controller/ConfigController.php
 - /var/www/html/public_html/app/Plugin/NakwebTest007/Controller/NakwebTest007Controller.php
 - /var/www/html/public_html/app/Plugin/NakwebTest007/Form/Type/NakwebTest007ConfigType.php
 - /var/www/html/public_html/app/Plugin/NakwebTest007/Resource/template/admin/config.twig
 - /var/www/html/public_html/app/Plugin/NakwebTest007/Resource/template/index.twig
 - /var/www/html/public_html/app/Plugin/NakwebTest007/LICENSE

[+]Database
 Plugin information was added to table [DB.Plugin] (id=1)
Plugin was created successfully

  入力内容によってプラグインのベースが作成されました。
  これでジェネレーターの処理は完了です。
 
こうやってみると使用するイベントが把握できているほうが便利ですね。
イベントを設定していない状況であればジェネレータを使用するありがたみが激減ですね(笑)
 
まぁ、雛形が決まっているといろいろと助かる部分もありますので次回からはジェネレーターを使用していきたいと思います。
と、云うことで今回はここまでです。

【3.0.13】プラグインジェネレータ への5件のコメント

  1. hitomin より:

    初めまして。いつも拝見させていただいてます。
    記事内に『公式の紹介サイトでは「generate」となっていますが確認すると「generate」が正しいようです』とありますが、スペルは同じようにおもいますがどこが違うのでしょうか?
    当方でコマンドを実行したところ「undefined mode.」と返ってきてしまい、先に進めません。なにか足りないものがあるのでしょうか?
    ご教授いただければありがたいです。

  2. chiharu より:

    ご指摘有難う御座います。
    記事内の内容を修正させて頂きました。
      
    本日時点では公式サイトに関し該当部分の綴りが「genereate」となっており、余分な「e」が挿入されている状態です。→「gener”e”ate」
      
    実際には「generate」として頂くことで実行できるようになるかと思います。
    また、それでも「undefined mode.」が表示される場合、以下の一文を実行して頂くと、実行可能な mode が表示されます。

    php app/console plugin:develop --help
    

    表示された Help の内容をにてスペルミスが無いかをご確認頂ければと思います。

  3. chiharu より:

    追記させて頂きます。
    改めて誤った綴り「genereate」にて試したところ以下の文言が表示されました。

     mode is not correct, try help for more options
     plugin:develop --help
    

      
    ご提示頂いた状況と少し異なるようです。
    もしかすると、EC-CUBEのバージョンが 3.0.13 より前のものを使用されている可能性があります。
    3.0.13 より前のバージョンを使用されている場合、バージョンアップを行う必要があります。
    お手数ですが 合わせてご確認下さい。

  4. m1570818532 より:

    3.0.12 以前は プラグインジェネレータープラグインがあったけどね。w。

  5. chiharu より:

    情報有難う御座います。
      
    キュール様さまが作成されている以下のプラグインかと思います。
    http://www.ec-cube.net/products/detail.php?product_id=1022
      
    社内では何人かお世話になっているようですが、私が使用させて頂いていないことと、通常機能の紹介の為、記載を省いておりました。
      
    m1570818532 様の仰る通り、情報として提供したほうが親切ですね。
    ご指導有難う御座います。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

* Copy This Password *

* Type Or Paste Password Here *

*

コメント欄にコードを挿入したい場合は、[php][/php] を使ってください。