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