2013-04-01 6 views
10

Ho cercato di ignorare l'estensione form_row Twig in modo da poter eseguire il rendering di una riga di stile Bootstrap di Twitter. Una fila modulo Twitter bootstrap dovrebbe apparire così: div styleTwig Form Theming - attributo classe 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> 

La base ramoscello form_row blocco è definito in this link come di seguito:

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

Quindi, i miei pensieri erano di mettere solo i div necessarie e hard code dove necessario le voci di classe (cioè nel div principale) ma passa il valore 'attr' alle sezioni form_label, form_errors e form_widget. Per ora ho eliminato form_errors, solo che non ci approfondisco troppo. Ecco quello che ho provato:

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

Il problema, però, è non importa ciò che cerco, l'estensione form_label non usa "controllo-label", come la mia classe (e dovrebbe in base al codice sorgente di aggiungerlo se ci sono quelli esistenti, come "richiesto"). Ecco cosa ottengo quando ho vista la fonte della pagina visualizzata:

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

Come si può vedere, la class = "richiesta" è lì ed è preso dalla forma base attributi dell'oggetto, ma dovrebbe essere class = "required control-label", che non è.

Qui ci si trova in una situazione in cui la documentazione (oltre alla sorgente) indica che si dovrebbe usare la notazione "form_label (view, label, variables)". Link ai documenti here.

+2

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

risposta

13

Penso che sia necessario utilizzare label_attr anziché attr.

+0

Impressionante, grazie! :) – Sarel

+1

Per Symfony 2.1 è 'label_attr' – Erioch

+1

Grazie a @Erioch, solo per scopi informativi, lo abbiamo trovato nei documenti proprio ora: http://symfony.com/doc/2.1/reference/forms/twig_reference.html – Sarel

Problemi correlati