2013-04-01 78 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