4. quien soy
• Ingeniero Informático de Madrid
• Seguridad IT & Gráficos en
Hannover, Alemania
• PFC con Symfony1 en Chicago, USA
• Programador PHP & Symfony2 @ ideup!
• Maquetador en tiempos libres
5. root
• Formularios en Symfony2
• Objetos de dominio
• Validación
• Demo 1
• Colecciones prototipadas
• Eventos y Subscriptores
• Demo 2
7. root/formularios
• Componente:
– Creación de formularios
– Sincronización de datos (app <-> client)
– Guessing de tipos
– Automatiza la validación de datos
(Componente Validator)
– Creación de la vista
8. root/formularios/mi-bundle
• Tipos:
– Definen el formulario y los campos
• Handlers:
– Procesan el formulario
• Objetos de dominio (opcional):
– Contienen los datos
• Eventos (opcional):
– Modifican el formulario o sus datos
• Transformadores (opcional):
– Modifican los datos entre la aplicación y el cliente
13. root/objetos-de-dominio
• Moldean el objeto para su uso en los
formularios
• Tienen mas o menos campos que la clase
final
• Aíslan la notación de la validación de la
entidad
• Permiten cambiar el tipo a los campos
• No esta acoplado al mapeo de Doctrine
15. root/objetos-de-dominio/uso/2
• Creamos la acción en el controlador
• Pasamos el objeto del modelo al objeto de dominio
para el mapeo de datos en la creación del formulario
• Mandamos la vista del formulario
18. root/validacion
• Sistema de restricciones de datos
• Principal uso en formularios (también
como servicio)
• Se utiliza en el bind de datos del
formulario
• Se puede implementar de varias maneras
19. root/validacion/tipos
• Mediante Asserts en campos concretos
(anotaciones, yml…)
• Grupos de validaciones
• Callbacks
• Restricciones personalizadas (Custom
Constraints)
20. root/validacion/callbacks
• Se pueden usar para validaciones
condicionales
• Pueden intervenir múltiples campos
• Se integran en la Entidad o en el Objeto
de Dominio
21. root/validacion/callbacks/uso
• Le indicamos al
objeto el callback que
tiene que usar
• Cuando valide
ejecutara el código
para comprobar la
nueva restricción
• Añade el error al
campo que le
indiquemos
26. root/colecciones
• Grupo de formularios del mismo tipo
embebidos en otro
• Validado recursivo
• Persistencia automática gracias a Doctrine
(warning!!)
27. root/colecciones/prototipos
• Permiten añadir o eliminar elementos de
la colección en el formulario
• Ofrecen el prototipo del template de un
elemento de la colección para añadir
nuevos items con javascript
28. root/colecciones/vista
• Renderizamos toda la colección y el
template del prototipo mediante un Twig
Theme
• Problema con los ids de los elementos de
la colección (_form_field_x_widget)
33. root/eventos
• Modificación de datos, del formulario o
ejecución de acciones durante el ciclo de
vida de un formulario.
• Eventos al crear el formulario
• Eventos al procesarlo
34. root/eventos/tipos
• Envío de datos (setData)
– Lanzados en la asignación de datos al
formulario
– Manipulan los datos de aplicación (modelo)
• Recepción de datos (bind)
– Lanzados en la unión de los datos de cliente
(form) y los de aplicación (modelo)
37. root/eventos/suscriptores
• Tipo de Listener
• Previamente le dice al Dispatcher que
eventos va a escuchar
• Abstracción del manejo de eventos de los
formularios