1

Symfony2 フォームをカスタマイズして、次の例のような html コードを生成しようとしています:

<div class="cform_box">
  <div><label>First name:</label></div>
  <input name="" type="text" id="" class="TextBox" />
</div>
<div class="cform_box" style="height:auto">
   <div><label>Message:</label></div>
  <textarea name="" rows="10" cols="38" id="" class="TextBox" style="height:100px;" /></textarea>
</div>

私のフォームコード:

$builder->add('name', 'text', array('label' =>'First Name:'));
$builder->add('message', 'textarea', array('label' =>'Message:'));

テンプレートcontact.html.twig:

{% form_theme form _self %}
{% block text_widget %}
{% spaceless %}
    <input type="text" class='TextBox' {% if value is not empty %}value="{{ value }}"     {% endif %}/>
{% endspaceless %}
{% endblock %}
{% block textarea_widget %}
{% spaceless %}
    <div class="textarea_widget">
        <textarea rows="10" cols="38" id="{{ id }}" class="TextBox" style="height:100px;">{{ value }}</textarea>
    </div>
{% endspaceless %}
{% endblock textarea_widget %}

<div class="cform_box">    
    <div>{{ form_label(form.name) }}</div>{{ form_widget(form.name) }}
</div>
<div class="cform_box" style="height:auto">
    <div>{{ form_label(form.message) }}</div>{{ form_widget(form.message) }}
</div>

またはコメントアウトした場合、私はどちらVariable "value" does not exist in contact.html.twigかを取得しています。Variable "id" does not exist in form_div_layout.html.twig{% block text_widget %}

Symfony 2.0.15 を使用しています

4

1 に答える 1

1

'text_widget'という名前のブロックはSymfony2フォームヘルパーに存在しません。が付いたfield_widgettype = 'text'です。

'attr'を使用して、phpフォーム定義からクラス"textBox"を追加する必要があります。

$builder->add('name', 'text', array('label' =>'First Name:', 'attr' => array('class' => 'textBox')));
$builder->add('message', 'textarea', array('label' =>'Message:', 'attr' => array('class' => 'textBox')));

またはform_themeファイルで:

{% block field_widget %}
{% spaceless %}
    {% if type == 'text' or type == 'textarea' %}
        {% set attr = attr|merge({'class': attr.class|default('') ~ ' textBox'}) %}
    {% endif %}
    {% set type = type|default('text') %}
    <input type="{{ type }}" {{ block('widget_attributes') }} value="{{ value }}" />
{% endspaceless %}
{% endblock field_widget %}
于 2012-06-27T13:59:26.017 に答える