我一直在尝试覆盖form_row Twig扩展,以便我可以呈现Twitter Bootstrap样式行。 twitter boostrap表格行应该如下所示:
<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>
基本树枝div样式form_row块在this link中定义如下:
{% 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(view,label,variables)”符号。链接到文档here。
答案 0 :(得分:14)
我认为您需要使用label_attr
而不是attr
。
答案 1 :(得分:1)
对于仍然希望这样做的人,Symfony 2.6附带一个Bootstrap form theme,它将为您完成此任务。