2011-12-06 13 views
6

Por defecto, un form_row(form.name) se representa como algo así como:Cómo cambiar el comportamiento form_row en Symfony 2/Ramita

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

Cómo/dónde puedo cambiar el comportamiento de form_row() a, por ejemplo:

<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

[Cómo personalizar la representación del formulario] (http://symfony.com/doc/current/form/form_customization.html#cookbook-form-the-methods) – Trix

Respuesta

17

Puede consultar esta URL: http://symfony.com/doc/2.0/cookbook/form/form_customization.html#cookbook-form-theming-methods

Hay un párrafo sobre la personalización de form_row().

Aquí hay un ejemplo simple. Por defecto, form_row() crearía una estructura simple html así:

RAMITA:

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

Así, de acuerdo con los documentos, puede crear una nueva rama plantilla, y agregue class = "form_row" para rodear el campo y la etiqueta. Colocarlo en YourBundle/views/Form/fields.html.twig y poner el siguiente código de allí:

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

En el archivo de plantilla, añada la siguiente línea:

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

Ahora, el form_row se usará la plantilla de ese archivo que creó y devolverá el siguiente código 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> 

Espero que ayude.

+1

Tiene razón, la respuesta se actualizó. – mkrowiarz

Cuestiones relacionadas