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 %}