0

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

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

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

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

4

1 回答 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 中有效。

于 2013-10-13T23:03:55.937 回答