Buenas prácticas oficiales de Symfony

7.3. Renderizando el formulario

Symfony permite renderizar los formularios de muchas formas diferentes, desde renderizar todo el formulario a la vez con una instrucción hasta renderizar cada una de las partes que forman cada campo de formulario. La mejor manera de renderizar el formulario siempre depende de cuánto necesites personalizar los formularios.

Lo más sencillo, especialmente durante el desarrollo de la aplicación, es crear las etiquetas <form> y </form> a mano y después utilizar la función form_widget() para renderizar todos los campos del formulario:

<form method="POST" {{ form_enctype(form) }}>
    {{ form_widget(form) }}
</form>

Buena Práctica No utilices las funciones form(), form_start() o form_end() para renderizar las etiquetas de apertura y cierre del formulario.

Los programadores Symfony más experimentados se habrán dado cuenta de que en el ejemplo anterior no se utilizan las funciones form_start() o form() para renderizar la etiqueta <form> del formulario. El motivo es que, aunque las funciones son muy cómodas, no aportan tantas ventajas teniendo en cuenta que reducen ligeramente la legibilidad del formulario.

Truco La única excepción es el formulario para borrar artículos porque es tan simple que su único contenido es un botón y entonces sí que merece la pena utilizar estos atajos.

Si quieres controlar de manera más precisa cómo se renderizan los campos del formulario, no utilices la función form_widget(form) y en su lugar, renderiza cada campo de formulario individualmente. Consulta el artículo How to Customize Form Rendering para saber cómo hacerlo y para aprender a definir temas de formulario.