miércoles, 18 de noviembre de 2009

Personalizando el diseño de los formularios en symfony

Una de las partes que más me gusta de symfony
es el sistema de formularios muy flexible, potente y sobre todo cómodo. Hay documentación muy amplia al respecto
aunque algunos capítulos están sin completar.

Por defecto symfony renderiza los formularios como tablas (también puedes rapidamente cambiarlo a listados) y si al final no quedas contento puedes modificarlo en la plantilla a gusto del consumidor.

Pero si tienes claro la estructura que van a tener la mayoría de los formularios en tu aplicación y no te interesa que sean tablas o listas (y queremos evitar tener que maquetar cada una de las plantillas) tendremos que extender una clase y hacer uso de ella.

La clase en cuestión es sfWidgetFormSchemaFormatter
y es bastante sencilla. Basta con abrir las dos clases extendidas que tiene symfony tanto para listas como para tablas y echarles un ojo. (sfWidgetFormSchemaFormatterList y sfWidgetFormSchemaFormatterTable respectivamente)

Dentro de la configuración del formulario hacemos uso de la función $this->widgetSchema->setFormFormatterName() que espera como argumento una cadena que determina el nombre de la clase que va a buscar. Si por ejemplo queremos que nuestros formularios se decoren con etiquetas div no tendremos mas que crea una clase llamada sfWidgetFormSchemaFormatterDiv y hacer uso de ella en los formularios ($this->widgetSchema->setFormFormatterName('div')).

No hay comentarios: