Formularios al limite
Upcoming SlideShare
Loading in...5
×
 

Formularios al limite

on

  • 4,349 views

 

Statistics

Views

Total Views
4,349
Views on SlideShare
2,145
Embed Views
2,204

Actions

Likes
6
Downloads
110
Comments
0

13 Embeds 2,204

http://www.symfony.es 1114
http://desymfony.com 852
http://www.desymfony.com 104
http://desymfony.es 36
http://symfony.es 35
http://librosweb.es 32
http://www.desymfony.es 8
http://www.linkedin.com 8
https://www.linkedin.com 8
http://translate.googleusercontent.com 2
http://www.sfexception.com 2
http://desymfony.local 2
http://desymfony.eu 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Formularios al limite Formularios al limite Presentation Transcript

  • 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, USA• Programador PHP & Symfony2 @ ideup!• Maquetador en tiempos libres
  • root• Formularios en Symfony2• Objetos de dominio• Validación• Demo 1• Colecciones prototipadas• Eventos y Subscriptores• Demo 2
  • formularios en Symfony2
  • 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
  • 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
  • root/formularios/mi-bundle/estruct eventos handlersobjetos de dominio Tipos + campos personalizados
  • 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• 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
  • root/objetos-de-dominio/uso/1• Creamos el objeto de dominio• Añadimos las restricciones• Preparamos el mapeo de datos del constructor
  • 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
  • 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
  • validación
  • 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
  • root/validacion/tipos• Mediante Asserts en campos concretos (anotaciones, yml…)• Grupos de validaciones• Callbacks• Restricciones personalizadas (Custom Constraints)
  • 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
  • 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
  • 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 validador
  • demo 1
  • colecciones prototipadas
  • root/colecciones• Grupo de formularios del mismo tipo embebidos en otro• Validado recursivo• Persistencia automática gracias a Doctrine (warning!!)
  • 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
  • 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)
  • 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
  • root/colecciones/prototipos/uso/2• Usando un twig theme creamos un bloque que se ocupe tanto del prototipo como del renderizado de los hijos
  • 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
  • eventos y suscriptores
  • 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
  • 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)
  • 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 manejo de eventos de los formularios
  • 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
  • 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