Twitter Bootstrap スタイルの行をレンダリングできるように、form_row Twig 拡張機能をオーバーライドしようとしています。Twitter ブーストラップ フォームの行は次のようになります。
<div class="control-group">
<label class="control-label" for="idOfMainInput">Label Name:</label>
<div class="controls">
<input type="text" id="idOfMainInput" name="someDumbName">
</div>
</div>
ベースの twig div スタイルの form_row ブロックは、このリンクで次のように定義されています。
{% block form_row %}
{% spaceless %}
<div>
{{ form_label(form) }}
{{ form_errors(form) }}
{{ form_widget(form) }}
</div>
{% endspaceless %}
{% endblock form_row %}
したがって、私の考えでは、必要な div を配置し、必要に応じてクラス エントリ (つまり、メイン div) をハード コードし、「attr」値を form_label、form_errors、および form_widget セクションに渡します。ここでは、深く掘り下げないように form_errors を削除しました。これが私が試したことです:
{% form_theme form _self %}
{% block form_row %}
{% spaceless %}
<div class="control-group">
{{ form_label(form, 'test label name', { 'attr': {'class': 'control-label'} }) }}
<div class="controls">
{{ form_widget(form) }}
{{ form_errors(form) }}
</div>
</div>
{% endspaceless %}
{% endblock form_row %}
ただし、問題は、私が何を試しても、form_label 拡張機能が "control-label" をクラスとして使用しないことです (そして、ソース コードによれば、"required" などの既存のものがある場合はそれを追加する必要があります)。レンダリングされたページのソースを表示すると、次のようになります。
<div class="control-group">
<label for="form_rsa_id" class="required">test label name</label>
<div class="controls">
<input type="number" id="form_rsa_id" name="form[rsa_id]" required="required" />
</div>
</div>
ご覧のとおり、class="required" があり、基本フォーム オブジェクト属性から取得されますが、class="required control-label" である必要がありますが、そうではありません。
ドキュメント(およびソース)には、「form_label(ビュー、ラベル、変数)」という表記を使用する必要があると記載されているため、ここではちょっと途方に暮れています。ドキュメントへのリンクはこちら。