2013-04-01 8 views
10

Próbowałem zastąpić rozszerzenie Form_row Twig, dzięki czemu mogę renderować wiersz stylu Bootstrap na Twitterze. Twitter boostrap forma wiersz powinien wyglądać następująco:Twist formowania Theming - atrybut klasy 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> 

gałązka baza div style form_row blok jest zdefiniowany w this link jak poniżej:

{% block form_row %} 
{% spaceless %} 
    <div> 
     {{ form_label(form) }} 
     {{ form_errors(form) }} 
     {{ form_widget(form) }} 
    </div> 
{% endspaceless %} 
{% endblock form_row %} 

Więc, moje myśli były po prostu umieścić niezbędne div w i, w razie potrzeby, twardy kod, wpisy klas (tj. w głównym div), ale przekazują wartość 'attr' do sekcji form_label, form_errors i shape_widget. Na razie zabrałem form_errors, po prostu nie zagłębiam się w to zbyt głęboko. Oto, co starałem:

{% 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 %} 

Problemem jest jednak to, bez względu na to, co staram rozszerzenie form_label nie używać „control-label” w mojej klasie (i powinien zgodnie z kodem źródłowym dołączyć, jeśli istnieją istniejące, takie jak "wymagane"). Oto co mam kiedy zobaczyć źródło renderowane strony:

<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> 

Jak widać, klasa = „required” istnieje i jest pobierana z formy bazowej atrybutów obiektu, ale powinno być class = "wymagana etykieta kontrolna", której nie ma.

Trochę tu nie ma, ponieważ dokumentacja (jak również źródło) stwierdza, że ​​należy używać zapisu "form_label (widok, etykieta, zmienne)". Link do dokumentów here.

+2

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

Odpowiedz

13

Myślę, że należy użyć label_attr zamiast attr.

+0

Niesamowite, dzięki! :) – Sarel

+1

Dla Symfony 2.1 jest @ label_attr' – Erioch

+1

Dzięki @Erioch, tylko dla celów informacyjnych, znalazłem go właśnie w dokumentach: http://symfony.com/doc/2.1/reference/forms/twig_reference.html – Sarel

Powiązane problemy