オーバーライドしようとしている Twig フィールドは次のとおりです: github
このカスタム フォーム テーマで変更されたチェックボックスのリストがあります。
{% block choice_widget_expanded %}
{% spaceless %}
<div {{ block('widget_container_attributes') }}>
{% for child in form %}
<div class="checkbox_row">
{{ form_widget(child) }}
{{ form_label(child) }}
</div>
{% endfor %}
</div>
{% endspaceless %}
{% endblock choice_widget_expanded %}
を使用してクラスを追加しようとしました{{ form_row(form.fieldName), {'attr':{'class':'myclass'}}) }}
しかし、それはにクラスを追加するだけdiv#formName_fieldName
です。次にカスタムブロックを追加してみました
{% block _formName_fieldName_widget %}
{% spaceless %}
<input type="checkbox" {{ block('widget_attributes') }} value="{{ value }}" class="myclass_{{ value }}" />
{% endspaceless %}
{% endblock choice_widget_expanded %}
myclass_1, myclass_2
必要な値なども含めていることに注意してください。
これの問題は、ブロックが配列を受け取るため、次のようになることです
{% block _fb_post_facebook_pages_widget %}
{% spaceless %}
<div {{ block('widget_container_attributes') }}>
{% for child in form %}
{{ form_widget(child) }}
{{ form_label(child) }}
{% endfor %}
</div>
{% endspaceless %}
{% endblock choice_widget_expanded %}
しかし、特定のチェックボックスにクラスを追加したい場合は、次のように記述する必要があります。
{% block _formName_fieldName_X_widget %}
{% spaceless %}
<input type="checkbox" {{ block('widget_attributes') }} value="{{ value }}" class="myclass_{{ value }}" />
{% endspaceless %}
{% endblock choice_widget_expanded %}
ここで、X は fieldName の値になります...そして明らかに値は何でもかまいませんので、1-1000000000000 のすべての値のブロックを作成することはできません...
これを動的に行う方法はありますか?