Successfully reported this slideshow.
Your SlideShare is downloading. ×

Formularios al limite

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Upcoming SlideShare
Monitorización DeSymfony
Monitorización DeSymfony
Loading in …3
×

Check these out next

1 of 42 Ad

More Related Content

Viewers also liked (19)

Similar to Formularios al limite (20)

Advertisement

Formularios al limite

  1. 1. formularios al limite Ignacio Velazquez @nass600 ignaciovelazquez.es deSymfony | 2012
  2. 2. 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
  3. 3. root • Formularios en Symfony2 • Objetos de dominio • Validación • Demo 1 • Colecciones prototipadas • Eventos y Subscriptores • Demo 2
  4. 4. formularios en Symfony2
  5. 5. 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
  6. 6. 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
  7. 7. root/formularios/mi-bundle/estruct eventos handlers objetos de dominio Tipos + campos personalizados
  8. 8. root/formularios/creación
  9. 9. root/formularios/procesado
  10. 10. objetos de dominio
  11. 11. 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
  12. 12. root/objetos-de-dominio/uso/1 • Creamos el objeto de dominio • Añadimos las restricciones • Preparamos el mapeo de datos del constructor
  13. 13. 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
  14. 14. root/objetos-de-dominio/uso/3 • Creamos el tipo con los campos del objeto de dominio • Asignamos a data_class el namespace del objeto de dominio
  15. 15. validación
  16. 16. 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
  17. 17. root/validacion/tipos • Mediante Asserts en campos concretos (anotaciones, yml…) • Grupos de validaciones • Callbacks • Restricciones personalizadas (Custom Constraints)
  18. 18. 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
  19. 19. 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
  20. 20. root/validacion/restriccion-pers • Añaden mas restricción al formulario creando un Constraint nuevo • Modulable y reusable
  21. 21. root/validacion/restriccion-pers/uso • Directamente añadimos la nueva restricción al campo • Creamos la restricción y su validador
  22. 22. demo 1
  23. 23. colecciones prototipadas
  24. 24. root/colecciones • Grupo de formularios del mismo tipo embebidos en otro • Validado recursivo • Persistencia automática gracias a Doctrine (warning!!)
  25. 25. 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
  26. 26. 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)
  27. 27. root/colecciones/prototipos/uso/1  Tipo del formulario • Añadimos el tipo de los elementos de la colección • Habilitamos los atributos allow_add y allow_delete
  28. 28. root/colecciones/prototipos/uso/2 • Usando un twig theme creamos un bloque que se ocupe tanto del prototipo como del renderizado de los hijos
  29. 29. root/colecciones/prototipos/uso/3  Javascript • Añadimos los hooks para añadir y eliminar elementos de la colección • Reemplazamos el placeholder con un id numérico
  30. 30. eventos y suscriptores
  31. 31. 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
  32. 32. 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)
  33. 33. root/eventos/tipos/envio • PRE_SET_DATA • SET_DATA • POST_SET_DATA
  34. 34. root/eventos/tipos/recepcion • PRE_BIND • BIND_CLIENT_DATA • BIND_NORM_DATA • POST_BIND
  35. 35. 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
  36. 36. root/eventos/suscriptores/uso/1 • Creamos la clase y escuchamos en el evento que queremos • Añadimos la lógica que va a ser lanzada
  37. 37. root/eventos/suscriptores/uso/2 • Añadimos el suscriptor en el tipo del formulario
  38. 38. demo 2
  39. 39. preguntas?
  40. 40. gracias • www.slideshare.net/nass600/formularios-al-limite

×