6

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 属性を動的に設定する方法はありますか? ありがとうございました。

4

2 に答える 2

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

はすでにtest名前として持っています。もちろんform、あなたのケースで呼び出されたルートフォーム名はまだあります。これを削除することはあまりお勧めできません。フォーム データを入力するリクエストを読むと、フォーム名でフォームを識別できるからです。

[フォーム] 空のルート フォーム名を有効にする https://github.com/symfony/symfony/pull/2936を読む

于 2012-10-03T10:27:07.697 に答える
1

この方法で Twig ブロックをオーバーライドします。

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

変更は name={{full_name}} を最初の行から最後の行に移動するだけなので、name attr をフォーム ビルダーの add 要素に追加すると、名前は無視されなくなります。

于 2014-10-25T16:57:36.257 に答える