设置symfony 2表单字段的名称属性

时间:2012-10-02 13:16:38

标签: php forms symfony formbuilder

如何在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属性?谢谢。

2 个答案:

答案 0 :(得分:1)

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

已经有test作为名称。当然,在您的情况下仍然存在名为form的根表单名称。实际上并不建议删除它,因为当您阅读填充表单数据的请求时,您可以通过其表单名称来标识表单。

阅读 [表单]启用空根表单名称 https://github.com/symfony/symfony/pull/2936

答案 1 :(得分: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添加到表单构建器添加元素时,名称将不再被忽略。

相关问题