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を使っている方は適切なタイミングでバージョンアップをご検討ください。
EC-CUBEゴールドパートナー