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 クラス 'form-control' が追加されます。

ただし、このオーバーライドを、選択肢チェックボックスのフィールド タイプではない フォーム フィールドのみに制限したいと考えています。どうすればいいですか?

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

symfony 2.3+ から削除されましたが 2.1 で動作するため、将来の 2.3+ への移行を容易にするform_row代わりに使用することをお勧めします。form_fieldform_fieldform_row

于 2013-10-13T23:03:55.937 に答える