EC-CUBE3のフォームはSymfony2を踏襲していますので、
FormBuilderInterfaceのインスタンスに対してフォームをaddしていくという形で作成します。

例えばFormTypeInterfaceを継承したクラスの中で以下のように書きます。

        $builder->add('name', 'search', array(
            'required' => false,
            'label' => '商品名を入力',
            'empty_data' => null,
            'attr' => array(
                'maxlength' => 50,
            ),
        ));

そしてtwig内では以下のように出力します。

                <div>
                    {{ form_label(form.name) }}
                    {{ form_widget(form.name) }}
                    {{ form_errors(form.name) }}
                </div>

ただEC-CUBEではGETパラメータなどによって出力するフォームを動的に変えたい場合があります。
この場合twigテンプレート内では、addされていないフォームを出力しようとするとエラーが起こります。

このエラーを回避するためにはtwig内でフォームの存在チェックをする必要が有ります。
addしたフォームはform変数に入っているのでis definedを使って以下のように書けます。

                {% if form.name is defined %}
                <div>
                {{ form_label(form.name) }}
                {{ form_widget(form.name) }}
                {{ form_errors(form.name) }}
                </div>
                {% endif %}
日本発!ECオープンプラットフォーム「EC-CUBE」 EC-CUBEゴールドパートナー EC-CUBEは株式会社イーシーキューブの商標です

EC-CUBEカスタマイズに関するお問い合わせはこちら


    [重要]現在公式にセキュリティサポートが切れていないPHPは8.1以上、MySQLは8.0以上で、対応しているEC-CUBEバージョンは4.2以上です。古いEC-CUBEを使っている方は適切なタイミングでバージョンアップをご検討ください。

    EC-CUBEバージョンアップ