【问题标题】:Symfony2 How To Change The Form IDSymfony2 如何更改表单 ID
【发布时间】:2014-07-17 21:07:29
【问题描述】:

我有一个表单字段,我想在 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 创建表单字段?

【问题讨论】:

  • {{ form_widget(form.lastName, { 'value': 'test', 'id': 'new_id', 'attr': {'style': 'display:none'} }) }}我在我的表单上测试过,id字段被改变了。
  • Twig 的 form_row 和 field_widget 模板是什么样的?当我删除我的表单主题时,一切似乎都正常。
  • id 不应该在attrobject 中吗? (抱歉目前无法测试)

标签: php jquery forms symfony


【解决方案1】:

添加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 %}

【讨论】:

    【解决方案2】:

    id 需要在attr 部分:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-08
      相关资源
      最近更新 更多