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在您的情况下仍然调用了根表单名称。真的不建议删除它,因为当您阅读填充表单数据的请求时,您可以通过表单名称来识别表单。

阅读[Form] Enable empty root form name 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}} 从第一行移动到最后一行,因此当您将名称 attr 添加到表单构建器添加元素时,该名称将不再被忽略。

于 2014-10-25T16:57:36.257 回答