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

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

1
Symfony2表单组件 - 创建没有表单名称的字段。将name属性添加到Symfony2表单组件中的字段中,而不是在表单开头添加表单名称。 - max
2个回答

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

已经使用test作为名称。当然,在您的情况下仍然有称为form的根表单名称。不建议删除此内容,因为在读取请求以填充表单数据时,您可以通过其表单名称来识别表单。

阅读[Form] Enable empty root form namehttps://github.com/symfony/symfony/pull/2936


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 属性后,name 将不再被忽略。

默认情况下,文件为"Symfony/Bridge/Twig/Resources/view/Form/form_div_layout.html.twig"。 - HRoux

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接