Twig Form Theming - form_label类属性

时间:2013-04-01 13:02:42

标签: symfony twig

我一直在尝试覆盖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

2 个答案:

答案 0 :(得分:14)

我认为您需要使用label_attr而不是attr

答案 1 :(得分:1)

对于仍然希望这样做的人,Symfony 2.6附带一个Bootstrap form theme,它将为您完成此任务。