Twig Form Theming - form_label类属性

Sar*_*rel 10 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>
Run Code Online (Sandbox Code Playgroud)

基本树枝div样式form_row块在此链接中定义如下:

{% block form_row %}
{% spaceless %}
    <div>
        {{ form_label(form) }}
        {{ form_errors(form) }}
        {{ form_widget(form) }}
    </div>
{% endspaceless %}
{% endblock form_row %}
Run Code Online (Sandbox Code Playgroud)

所以,我的想法只是将必要的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 %}
Run Code Online (Sandbox Code Playgroud)

但问题是,无论我尝试什么,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>
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,class ="required"就在那里,取自基本表单对象属性,但它应该是class ="required control-label",而不是.

有点亏本,因为文档(以及来源)声明应该使用符号"form_label(view,label,variables)".链接到这里的文档.

qoo*_*mao 14

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