2013-04-01 43 views
10

我一直在尝试重写form_row树枝扩展,所以我可以呈现一个Twitter引导样式行。 Twitter的自举表格行看起来应该是这样:form_row块this link如下定义树枝形式主题 - form_label类属性

<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风格:

{% 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分机没有使用“控制标签”作为我的阶级(它应该根据源代码追加,如果有现有的,如“必需”)。下面是我得到的,当我查看呈现的页面的源代码:

<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 =“需要”是存在的,是从基本形式对象的属性拍摄,但它应该是类= “需要控制标签”,而不是。

由于文档(以及源代码)声明应该使用“form_label(view,label,variables)”这个表示法,所以在这里有点遗憾。链接到文档here

+2

http://stackoverflow.com/questions/11641727/apply-class-to-symfony2-form-label – gatisl

回答

13

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

+0

真棒,谢谢! :) – Sarel

+1

对于Symfony 2.1是'label_attr' – Erioch

+1

谢谢@Erioch,仅供参考,目前在文档中发现它:http://symfony.com/doc/2.1/reference/forms/twig_reference.html – Sarel