formularios al limiteIgnacio Velazquez@nass600ignaciovelazquez.es                        deSymfony | 2012
quien soy• Ingeniero Informático de Madrid• Seguridad IT & Gráficos en  Hannover, Alemania• PFC con Symfony1 en Chicago, U...
root•   Formularios en Symfony2•   Objetos de dominio•   Validación•   Demo 1•   Colecciones prototipadas•   Eventos y Sub...
formularios en Symfony2
root/formularios• Componente:  – Creación de formularios  – Sincronización de datos (app <-> client)  – Guessing de tipos ...
root/formularios/mi-bundle• Tipos:  – Definen el formulario y los campos• Handlers:  – Procesan el formulario• Objetos de ...
root/formularios/mi-bundle/estruct     eventos                               handlersobjetos de dominio                   ...
root/formularios/creación
root/formularios/procesado
objetos de dominio
root/objetos-de-dominio• Moldean el objeto para su uso en los  formularios• Tienen mas o menos campos que la clase  final•...
root/objetos-de-dominio/uso/1• Creamos el objeto de  dominio• Añadimos las  restricciones• Preparamos el mapeo de  datos d...
root/objetos-de-dominio/uso/2• Creamos la acción en el controlador• Pasamos el objeto del modelo al objeto de dominio  par...
root/objetos-de-dominio/uso/3• Creamos el tipo con los  campos del objeto de  dominio• Asignamos a data_class  el namespac...
validación
root/validacion• Sistema de restricciones de datos• Principal uso en formularios (también  como servicio)• Se utiliza en e...
root/validacion/tipos• Mediante Asserts en campos concretos  (anotaciones, yml…)• Grupos de validaciones• Callbacks• Restr...
root/validacion/callbacks• Se pueden usar para validaciones  condicionales• Pueden intervenir múltiples campos• Se integra...
root/validacion/callbacks/uso• Le indicamos al  objeto el callback que  tiene que usar• Cuando valide  ejecutara el código...
root/validacion/restriccion-pers• Añaden mas restricción al formulario  creando un Constraint nuevo• Modulable y reusable
root/validacion/restriccion-pers/uso• Directamente  añadimos la nueva  restricción al campo• Creamos la  restricción y su ...
demo 1
colecciones prototipadas
root/colecciones• Grupo de formularios del mismo tipo  embebidos en otro• Validado recursivo• Persistencia automática grac...
root/colecciones/prototipos• Permiten añadir o eliminar elementos de  la colección en el formulario• Ofrecen el prototipo ...
root/colecciones/vista• Renderizamos toda la colección y el  template del prototipo mediante un Twig  Theme• Problema con ...
root/colecciones/prototipos/uso/1 Tipo del formulario• Añadimos el tipo de los  elementos de la colección• Habilitamos lo...
root/colecciones/prototipos/uso/2• Usando un twig  theme creamos un  bloque que se ocupe  tanto del prototipo  como del  r...
root/colecciones/prototipos/uso/3 Javascript• Añadimos los  hooks para añadir y  eliminar elementos  de la colección• Ree...
eventos y suscriptores
root/eventos• Modificación de datos, del formulario o  ejecución de acciones durante el ciclo de  vida de un formulario.• ...
root/eventos/tipos• Envío de datos (setData)  – Lanzados en la asignación de datos al    formulario  – Manipulan los datos...
root/eventos/tipos/envio• PRE_SET_DATA• SET_DATA• POST_SET_DATA
root/eventos/tipos/recepcion•   PRE_BIND•   BIND_CLIENT_DATA•   BIND_NORM_DATA•   POST_BIND
root/eventos/suscriptores• Tipo de Listener• Previamente le dice al Dispatcher que  eventos va a escuchar• Abstracción del...
root/eventos/suscriptores/uso/1• Creamos la clase y  escuchamos en el  evento que  queremos• Añadimos la lógica  que va a ...
root/eventos/suscriptores/uso/2• Añadimos el  suscriptor en el tipo  del formulario
demo 2
preguntas?
gracias• www.slideshare.net/nass600/formularios-al-limite
Formularios al limite
Formularios al limite
Upcoming SlideShare
Loading in …5
×

Formularios al limite

4,661
-1

Published on

0 Comments
6 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
4,661
On Slideshare
0
From Embeds
0
Number of Embeds
9
Actions
Shares
0
Downloads
129
Comments
0
Likes
6
Embeds 0
No embeds

No notes for slide

Formularios al limite

  1. 1. formularios al limiteIgnacio Velazquez@nass600ignaciovelazquez.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 handlersobjetos 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
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×