Está en la página 1de 42

formularios al limite

Ignacio Velazquez
@nass600
ignaciovelazquez.es


deSymfony | 2012
quien soy
Ingeniero Informtico de Madrid
Seguridad IT & Grficos en Hannover,
Alemania
PFC con Symfony1 en Chicago, USA
Programador PHP & Symfony2 @ ideup!
Maquetador en tiempos libres
root
Formularios en Symfony2
Objetos de dominio
Validacin
Demo 1
Colecciones prototipadas
Eventos y Subscriptores
Demo 2
formularios en Symfony2

root/formularios
Componente:
Creacin de formularios
Sincronizacin de datos (app <-> client)
Guessing de tipos
Automatiza la validacin de datos
(Componente Validator)
Creacin 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 aplicacin y el cliente
root/formularios/mi-bundle/estruct
eventos
handlers
objetos de dominio
Tipos + campos
personalizados
root/formularios/creacin
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
Aslan la notacin de la validacin 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
Aadimos las
restricciones
Preparamos el mapeo de
datos del constructor
root/objetos-de-dominio/uso/2
Creamos la accin en el controlador
Pasamos el objeto del modelo al objeto de dominio
para el mapeo de datos en la creacin 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
validacin

root/validacion
Sistema de restricciones de datos
Principal uso en formularios (tambin
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 mltiples 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 cdigo
para comprobar la
nueva restriccin
Aade el error al
campo que le
indiquemos
root/validacion/restriccion-pers
Aaden mas restriccin al formulario
creando un Constraint nuevo
Modulable y reusable

root/validacion/restriccion-pers/uso
Directamente
aadimos la nueva
restriccin al campo
Creamos la
restriccin y su
validador
demo 1

colecciones prototipadas

root/colecciones
Grupo de formularios del mismo tipo
embebidos en otro
Validado recursivo
Persistencia automtica gracias a Doctrine
(warning!!)

root/colecciones/prototipos
Permiten aadir o eliminar elementos de
la coleccin en el formulario
Ofrecen el prototipo del template de un
elemento de la coleccin para aadir
nuevos items con javascript
root/colecciones/vista
Renderizamos toda la coleccin y el
template del prototipo mediante un Twig
Theme
Problema con los ids de los elementos de
la coleccin (_form_field_x_widget)
root/colecciones/prototipos/uso/1
Tipo del formulario
Aadimos el tipo de los
elementos de la coleccin
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
Aadimos los
hooks para aadir y
eliminar elementos
de la coleccin
Reemplazamos el
placeholder con un
id numrico
eventos y suscriptores

root/eventos
Modificacin de datos, del formulario o
ejecucin de acciones durante el ciclo de
vida de un formulario.
Eventos al crear el formulario
Eventos al procesarlo
root/eventos/tipos
Envo de datos (setData)
Lanzados en la asignacin de datos al
formulario
Manipulan los datos de aplicacin (modelo)

Recepcin de datos (bind)
Lanzados en la unin de los datos de cliente
(form) y los de aplicacin (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
Abstraccin del manejo de eventos de los
formularios
root/eventos/suscriptores/uso/1
Creamos la clase y
escuchamos en el
evento que
queremos
Aadimos la lgica
que va a ser lanzada
root/eventos/suscriptores/uso/2
Aadimos el
suscriptor en el tipo
del formulario
demo 2

preguntas?

gracias
www.slideshare.net/nass600/formularios-al-limite

También podría gustarte