2011-12-06 8 views
6

Per impostazione predefinita un form_row(form.name) è reso come qualcosa di simile:Come modificare il comportamento form_row in Symfony 2/Twig

<div><label for="form_name" class=" required">Name</label><input type="text" id="form_name" name="form[name]" required="required" maxlength="45" value=""></div> 

Come/dove posso cambiare il comportamento di form_row() per esempio:

<div class="someClassName"><label for="form_name" class=" required">Name</label></div><div class="someOtherClassName"><input type="text" id="form_name" name="form[name]" required="required" maxlength="45" value=""></div> 
+0

[Come personalizzare il rendering del modulo] (http://symfony.com/doc/current/form/form_customization.html#cookbook-form-theming-methods) – Trix

risposta

17

Puoi controllare questo URL: http://symfony.com/doc/2.0/cookbook/form/form_customization.html#cookbook-form-theming-methods

C'è un paragrafo sulla personalizzazione di form_row().

Ecco un semplice esempio. Per impostazione predefinita, form_row() creerebbe una semplice struttura html come questo:

TWIG:

{{ form_row(form.email, { 'label' : 'Your email address' }) }} 

HTML:

<div> 
    <label for="register_email" class=" required">Your email address</label> 
    <input type="email" id="register_email" name="register[email]" required="required" /> 
</div> 

Così, secondo i documenti, è possibile creare un nuovo ramoscello modello e aggiungi class = "form_row" al campo e all'etichetta circostanti. Mettere in YourBundle/views/Form/fields.html.twig e inserire il seguente codice in là:

{% block field_row %} 
<div class="form_row"> 
    {{ form_label(form) }} 
    {{ form_errors(form) }} 
    {{ form_widget(form) }} 
</div> 
{% endblock field_row %} 

Nel file template, aggiungere la seguente riga:

{% form_theme form 'YourBundle:Form:fields.html.twig' %} 

Ora, il form_row verrà utilizzato il modello da quel file creato e verrà restituito il seguente codice HTML:

<div class="form_row"> 
    <label for="register_email" class=" required">Email</label>   
    <input type="email" id="register_email" name="register[email]" required="required" /> 
</div> 

Spero che sia d'aiuto.

+1

Hai ragione, rispondi aggiornato. – mkrowiarz

Problemi correlati