【问题标题】:How do I apply custom rendering to all form fields except for certain field types in a Symfony 2.1 project如何将自定义呈现应用于除了 Symfony 2.1 项目中的某些字段类型之外的所有表单字段
【发布时间】:2013-10-14 07:03:55
【问题描述】:

我为我的项目创建了一个表单主题,内容如下:

{% block field_row %}
<div class="row">
    {{ form_errors(form) }}
    {{ form_label(form) }}
    {{ form_widget(form, { 'attr': {'class': 'form-control'} }) }}
</div>
{% endblock field_row %}

我将此主题应用于全局项目,现在我的所有表单字段都获得了额外的 css 类“form-control”。

然而,我现在想将此覆盖限制为仅 选择复选框字段类型的表单字段。我该怎么做?

【问题讨论】:

    标签: forms symfony symfony-2.1


    【解决方案1】:

    当我做了类似的事情时,我有点生气,因为它比我想象的要复杂。 可能有更好的方法,但这对我有用。

    {% block form_row %}
        {%  set choice = false %}
        {% if not form.vars.compound %}
            {% for prefix in form.vars.block_prefixes %}
                {% if prefix == 'choice' %}
                    {%  set choice = true %}
                {% endif %}
            {% endfor %}
        {% endif %}
        {% if choice %}
            <div class="row">
                {{ form_label(form) }}
                {{ form_errors(form) }}
                {{ form_widget(form) }}
            </div>      
        {% else %}       
            <div class="row">
                {{ form_errors(form) }}
                {{ form_label(form) }}
                {{ form_widget(form, { 'attr': {'class': 'form-control'} }) }}
            </div>  
        {% endif %}   
    {% endblock form_row  %}
    

    我建议使用form_row 而不是form_field 来简化将来向2.3+ 的过渡,因为form_field 已从symfony 2.3+ 中删除,但form_row 在2.1 中有效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-12
      • 2013-04-02
      • 1970-01-01
      • 2016-09-22
      相关资源
      最近更新 更多