Symfony2如何更改表单ID


Symfony2 How To Change The Form ID

我有一个表单字段,我想在Twig中渲染时更改ID。由于某种原因,它没有将ID添加到表单字段。

这是我在Twig中如何做的:

 {{ form_widget(form.purchaseOrderLineItem, { 'value': value, 'id': 'new_id',  'attr': {'style': 'display:none'} }) }} 

输出如下:

  <input class="form-control" type="text" value="203543" />

为什么不创建带有ID的表单字段?

添加id属性没有意义,因为它硬编码在模板form_div_layout.html.twig中。但是你可以像这样重写它:

{% form_theme form _self %}
{% block widget_attributes %}
    {% spaceless %}
        {% if attr.id is not defined %}id="{{ id }}"{% endif %} name="{{ full_name }}"{% if read_only %} readonly="readonly"{% endif %}{% if disabled %} disabled="disabled"{% endif %}{% if required %} required="required"{% endif %}{% if max_length %} maxlength="{{ max_length }}"{% endif %}{% if pattern %} pattern="{{ pattern }}"{% endif %}
        {% for attrname, attrvalue in attr %}{% if attrname in ['placeholder', 'title'] %}{{ attrname }}="{{ attrvalue|trans({}, translation_domain) }}" {% else %}{{ attrname }}="{{ attrvalue }}" {% endif %}{% endfor %}
    {% endspaceless %}
{% endblock widget_attributes %}
{% block body %}
    {{ form(form) }}
{% endblock %}

id需要在attr section:

{{ form_widget(form.purchaseOrderLineItem, { 'value': value,  'attr': {'style': 'display:none', 'id':'new_id'} }) }}