3ステップで受注一覧へ検索絞り込み条件を追加する方法EC-CUBE4FormTypeQueryCustomizerTemplateEventプラグイン開発EC-CUBE4系ではたった3ステップで管理画面の受注一覧へ検索項目を追加するプラグインを開発することが可能です。※今回は比較的難易度が高い、「発送日の期間」を絞り込み条件に追加します。出荷日ではなく「発送日」という名称を使用していますが、必要に応じて適宜置き換えてください。(EC-CUBE4からは出荷日の呼称がメインになっています)目標としては画像のようなイメージです。絞り込み条件追加をプラグインだけで実装していきます。eccube:plugin:generateコマンドによりプラグインのひな形を作成します。対話式でプラグインの設定を入力して実行します。今回はCompanyというコードのプラグインを作成しますが、名前やコードは好きなものに読み替えてください。動作検証にはプラグインをインストール・有効化ください開発途中で動作確認するにはプラグインをインストール・有効化しておく必要があります。次のコマンドを実行するとプラグインがインストール・有効化されます。–code=Company頭文字だけとってe:p:iとe:p:eでも実行可能です。検証環境での動作確認は.envの設定をAPP_ENV=dev、APP_DEBUG=1で実行することをおすすめします。Extension)既存のフォームを拡張するにはFormTypeExtensionの機構を利用します。(フックポイントで$builderに要素を追加する方法もあるので、ケースバイケースで最適な方法を使い分けます)ここではSearchOrderTypeを拡張するためのExtensionを作成します。AbstractTypeExtensionを継承したクラスを作成し、オーバーライドしたbuildFormメソッド内で$builderにshipping_date_start(発送日開始)とshipping_date_end(発送日終了)の要素を日付型で追加し拡張します。SearchOrderType::class;}}作成したFormExtensionは存在するだけで本体のロジックに組み込まれます。ここまででフォームの定義に発送日の要素を追加できましたので、次のステップでは定義した項目を画面上に表示してやります。(TemplateEvent::addSnippet)まず差し込むためのフォームをtwigで出力します。差し込んだフォームはbodyタグを閉じる直前に出力されるので、jQueryを使って検索フォーム内へ移動します。form_widget関数を利用して、定義したフォームを出力しています。class="col"></div></div>プラグインのEvent.phpを書き換え、今作成したフォームを受注一覧のテンプレートへ挿しこみます。いうキーでイベントがコールされます。このイベントに対して追加したメソッドadminOrderIndexTwigをフックしてやります。このメソッド内でTemplateEventのインスタンスに対してaddSnippetを実行し、上で作成したフォーム出力用テンプレートファイルを受注一覧画面へ挿入します。プラグインのResource/templateディレクトリにはプラグインコードの名前空間が与えられますので、’@Company/admin/Order/index_js.twig’で呼び出すことができます。$event){$event->addSnippet('@Company/admin/Order/index_js.twig');}}ステップ2までで画面上にフォームが表示されますが、絞り込みロジックはまだ実装していません。次のステップでは実際にフォームから送信した日付で受注情報を絞り込むクラスを作成します。絞り込みロジックを追加(QueryCustomizer)受注マスタの絞り込みなのでgetQueryKeyにはQueryKey::ORDER_SEARCH_ADMINを指定します。WhereClauseのgteとltメソッドで作ったインスタンスを配列形式で返却することにより、複数条件の絞り込みに対応させています。カスタマイズ対象のキーを返します。カスタマイズ対象のキーを返します。QueryKey::ORDER_SEARCH_ADMIN;}}ステップ3まで完了すると本体を何も修正しなくてもQueryCustomizer(WhereCustomizer)がロジックに組み込まれ、添付画像のように発送日で絞り込みができるようになっています。EC-CUBE4系では非常に簡潔に記述することができて素晴らしいです。EC-CUBEプラグイン開発まとめEC-CUBE4では仕組みを理解するとプラグインの開発が高速で実現可能です。プラグインを作って様々なカスタマイズを実現してみてください。EC-CUBEでフォームのカスタマイズをしていると、フィールドグループに追加のフィールドを含んではなりません。いうエラーが発生することがあります。このエラーを解決する方法をご紹介します。EC-CUBE3やEC-CUBE4で開発を行なっていると必ず耳にするのがドクトリンやエンティティ、レポジトリといったデータベース周りの用語です。EC-CUBE4系をデバッグモードで実行する方法をご紹介します。EC-CUBE4をGitからインストールしようとしてトップページにアクセスするとインストール画面にリダイレクトするはずがエラーになります。WordPressEC-CUBELaravel5。