2012-10-02 18 views
5

symfony 2でレンダリングフィールドの名前属性を設定する方法は?symfony 2フォームフィールドの名前属性を設定する

予想される出力:

 <input type="text" name="test" value="test" /> 

はこのよう

 {{ form_widget(form.test, { 'attr': {'name': 'test'} }) }} 

は間違いなく動作しないフィールドをレンダリング。

出力はまだ

 <input type="text" name="form[test]" value="test" />. 

で動的にname属性またはID属性を設定する方法はありますか?ありがとうございました。

+1

参照http://stackoverflow.com/questions/8416783/symfony2-form-component-creating-fields-without-the-forms-name-in-the-name-att – max

答えて

1
<input type="text" name="form[test]" value="test" /> 

はすでにtestという名前を持っています。もちろん、formという名前のルートフォーム名があります。これを削除することは、実際にはお勧めしません。フォームデータを入力する要求を読み込むと、そのフォーム名でフォームを識別できるためです。

{% block widget_attributes -%} 
id="{{ id }}" 
{%- if read_only %} readonly="readonly"{% endif -%} 
{%- if disabled %} disabled="disabled"{% endif -%} 
{%- if required %} required="required"{% endif -%} 
{%- for attrname, attrvalue in attr -%} 
    {{- " " -}} 
    {%- if attrname in ['placeholder', 'title'] -%} 
     {{- attrname }}="{{ attrvalue|trans({}, translation_domain) }}" 
    {%- elseif attrvalue is sameas(true) -%} 
     {{- attrname }}="{{ attrname }}" 
    {%- elseif attrvalue is not sameas(false) -%} 
     {{- attrname }}="{{ attrvalue }}" 
    {%- endif -%} 
{%- endfor -%} 
name={{full_name}} 
{%- endblock widget_attributes %} 

変化がわずかに移動している名= {{FULL_NAME}}最初の行からの全

読む[フォーム]小枝ブロックをこのようにオーバーライド空のルートフォーム名https://github.com/symfony/symfony/pull/2936

1

を有効にします最後のものです。したがって、フォームビルダーのadd要素にattrという名前を追加すると、その名前は無視されなくなります。

+0

デフォルトでは、ファイル "Symfony/Bridge/Twig/Resources/view/Form/form_div_layout.html.twig " – HRoux