SlideShare ist ein Scribd-Unternehmen logo
1 von 42
formularios al limite


Ignacio Velazquez
@nass600
ignaciovelazquez.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
                               handlers


objetos 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

Weitere ähnliche Inhalte

Andere mochten auch

Catalogo de moldes para prefabricados de hormigón de Moldtech
Catalogo de moldes para prefabricados de hormigón de MoldtechCatalogo de moldes para prefabricados de hormigón de Moldtech
Catalogo de moldes para prefabricados de hormigón de MoldtechMoldtech SL
 
Edificios EnergéTicamente Eficientes_ENFOQUES DE DISEÑO
Edificios EnergéTicamente Eficientes_ENFOQUES DE DISEÑOEdificios EnergéTicamente Eficientes_ENFOQUES DE DISEÑO
Edificios EnergéTicamente Eficientes_ENFOQUES DE DISEÑOeduamericas
 
INSOP S.A.C. Carta de presentación - FABRICACION DE TORRES VENTADAS Y AUTO S...
INSOP S.A.C.  Carta de presentación - FABRICACION DE TORRES VENTADAS Y AUTO S...INSOP S.A.C.  Carta de presentación - FABRICACION DE TORRES VENTADAS Y AUTO S...
INSOP S.A.C. Carta de presentación - FABRICACION DE TORRES VENTADAS Y AUTO S...Insop Comunicaciones
 
Modeliza de variables_climaticas2
Modeliza de variables_climaticas2Modeliza de variables_climaticas2
Modeliza de variables_climaticas2Lucas83
 
Eppur si muove - SIG Libre Girona
Eppur si muove - SIG Libre GironaEppur si muove - SIG Libre Girona
Eppur si muove - SIG Libre GironaJordi Graells
 
Herramientas publicación gis web poroceso y análisis
Herramientas publicación gis web   poroceso y análisisHerramientas publicación gis web   poroceso y análisis
Herramientas publicación gis web poroceso y análisisUrban Data Analytics
 
Mi primer programa en Symfony2
Mi primer programa en Symfony2Mi primer programa en Symfony2
Mi primer programa en Symfony2César Hernández
 
Paty carbajal presentacion
Paty carbajal presentacionPaty carbajal presentacion
Paty carbajal presentacionpatty_bperdomo21
 
Symfony2 admingenerator
Symfony2 admingeneratorSymfony2 admingenerator
Symfony2 admingeneratorsymfony_bcn
 
Geografía como plataforma: API REST vs OGC y Geodatabases - Conferencia Esri ...
Geografía como plataforma: API REST vs OGC y Geodatabases - Conferencia Esri ...Geografía como plataforma: API REST vs OGC y Geodatabases - Conferencia Esri ...
Geografía como plataforma: API REST vs OGC y Geodatabases - Conferencia Esri ...Esri
 
Clase 1 introducción a symfony 2
Clase 1   introducción a symfony 2Clase 1   introducción a symfony 2
Clase 1 introducción a symfony 2hydras_cs
 
Twig avanzado (sf2Vigo)
Twig avanzado (sf2Vigo)Twig avanzado (sf2Vigo)
Twig avanzado (sf2Vigo)Javier Eguiluz
 
Monografia Metodologia Agil XP
Monografia Metodologia Agil XPMonografia Metodologia Agil XP
Monografia Metodologia Agil XPJorw Yengle
 
Redis–symfony–barcelona–31 05-2012
Redis–symfony–barcelona–31 05-2012Redis–symfony–barcelona–31 05-2012
Redis–symfony–barcelona–31 05-2012symfony_bcn
 
Metaprogramación Compositiva en JavaScript
Metaprogramación Compositiva en JavaScriptMetaprogramación Compositiva en JavaScript
Metaprogramación Compositiva en JavaScriptJavier Vélez Reyes
 

Andere mochten auch (19)

Catalogo de moldes para prefabricados de hormigón de Moldtech
Catalogo de moldes para prefabricados de hormigón de MoldtechCatalogo de moldes para prefabricados de hormigón de Moldtech
Catalogo de moldes para prefabricados de hormigón de Moldtech
 
Edificios EnergéTicamente Eficientes_ENFOQUES DE DISEÑO
Edificios EnergéTicamente Eficientes_ENFOQUES DE DISEÑOEdificios EnergéTicamente Eficientes_ENFOQUES DE DISEÑO
Edificios EnergéTicamente Eficientes_ENFOQUES DE DISEÑO
 
INSOP S.A.C. Carta de presentación - FABRICACION DE TORRES VENTADAS Y AUTO S...
INSOP S.A.C.  Carta de presentación - FABRICACION DE TORRES VENTADAS Y AUTO S...INSOP S.A.C.  Carta de presentación - FABRICACION DE TORRES VENTADAS Y AUTO S...
INSOP S.A.C. Carta de presentación - FABRICACION DE TORRES VENTADAS Y AUTO S...
 
Modeliza de variables_climaticas2
Modeliza de variables_climaticas2Modeliza de variables_climaticas2
Modeliza de variables_climaticas2
 
Eppur si muove - SIG Libre Girona
Eppur si muove - SIG Libre GironaEppur si muove - SIG Libre Girona
Eppur si muove - SIG Libre Girona
 
Herramientas publicación gis web poroceso y análisis
Herramientas publicación gis web   poroceso y análisisHerramientas publicación gis web   poroceso y análisis
Herramientas publicación gis web poroceso y análisis
 
Mi primer programa en Symfony2
Mi primer programa en Symfony2Mi primer programa en Symfony2
Mi primer programa en Symfony2
 
Paty carbajal presentacion
Paty carbajal presentacionPaty carbajal presentacion
Paty carbajal presentacion
 
Symfony2 admingenerator
Symfony2 admingeneratorSymfony2 admingenerator
Symfony2 admingenerator
 
Geografía como plataforma: API REST vs OGC y Geodatabases - Conferencia Esri ...
Geografía como plataforma: API REST vs OGC y Geodatabases - Conferencia Esri ...Geografía como plataforma: API REST vs OGC y Geodatabases - Conferencia Esri ...
Geografía como plataforma: API REST vs OGC y Geodatabases - Conferencia Esri ...
 
Clase 1 introducción a symfony 2
Clase 1   introducción a symfony 2Clase 1   introducción a symfony 2
Clase 1 introducción a symfony 2
 
Twig avanzado (sf2Vigo)
Twig avanzado (sf2Vigo)Twig avanzado (sf2Vigo)
Twig avanzado (sf2Vigo)
 
Monografia Metodologia Agil XP
Monografia Metodologia Agil XPMonografia Metodologia Agil XP
Monografia Metodologia Agil XP
 
Redis–symfony–barcelona–31 05-2012
Redis–symfony–barcelona–31 05-2012Redis–symfony–barcelona–31 05-2012
Redis–symfony–barcelona–31 05-2012
 
Web components
Web componentsWeb components
Web components
 
Metodologia rad XP
Metodologia rad XPMetodologia rad XP
Metodologia rad XP
 
Metodologia xp
Metodologia xpMetodologia xp
Metodologia xp
 
Aplicaciones Machine Learning GIS
Aplicaciones Machine Learning GISAplicaciones Machine Learning GIS
Aplicaciones Machine Learning GIS
 
Metaprogramación Compositiva en JavaScript
Metaprogramación Compositiva en JavaScriptMetaprogramación Compositiva en JavaScript
Metaprogramación Compositiva en JavaScript
 

Ähnlich wie Formularios al limite

7-Unidad 2: Diseño de Vista-2.3 Introducción Web Services-Desarrollo
7-Unidad 2: Diseño de Vista-2.3 Introducción Web Services-Desarrollo7-Unidad 2: Diseño de Vista-2.3 Introducción Web Services-Desarrollo
7-Unidad 2: Diseño de Vista-2.3 Introducción Web Services-DesarrolloLuis Fernando Aguas Bucheli
 
Symfony2 un framework para maximizar tu productividad en desarrollo web
Symfony2 un framework para maximizar tu productividad en desarrollo webSymfony2 un framework para maximizar tu productividad en desarrollo web
Symfony2 un framework para maximizar tu productividad en desarrollo webIEBSchool
 
7-Unidad 2: Diseños de Vista-2.3 Introducción Web Services-Desarrollo Ejemplos
7-Unidad 2: Diseños de Vista-2.3 Introducción Web Services-Desarrollo Ejemplos 7-Unidad 2: Diseños de Vista-2.3 Introducción Web Services-Desarrollo Ejemplos
7-Unidad 2: Diseños de Vista-2.3 Introducción Web Services-Desarrollo Ejemplos Luis Fernando Aguas Bucheli
 
Dynamics saturday madrid 2019 web api
Dynamics saturday madrid 2019   web apiDynamics saturday madrid 2019   web api
Dynamics saturday madrid 2019 web apiDemian Raschkovan
 
Patrones de diseño II
Patrones de diseño IIPatrones de diseño II
Patrones de diseño IIkaolong
 
Desarrollo de Aplicaciones Web II - Sesión 03 - Formularios y Validaciones
Desarrollo de Aplicaciones Web II - Sesión 03 - Formularios y ValidacionesDesarrollo de Aplicaciones Web II - Sesión 03 - Formularios y Validaciones
Desarrollo de Aplicaciones Web II - Sesión 03 - Formularios y ValidacionesDidier Granados
 
Seminario html5
Seminario html5Seminario html5
Seminario html5UDECI
 
Ejemplos reales TPW
Ejemplos reales TPWEjemplos reales TPW
Ejemplos reales TPWYesenia_1226
 
UDA-Componentes RUP. Formulario
UDA-Componentes RUP. FormularioUDA-Componentes RUP. Formulario
UDA-Componentes RUP. FormularioAnder Martinez
 
UDA-Componentes RUP. Formulario (v2.1.1 deprecado)
UDA-Componentes RUP. Formulario  (v2.1.1 deprecado)UDA-Componentes RUP. Formulario  (v2.1.1 deprecado)
UDA-Componentes RUP. Formulario (v2.1.1 deprecado)Ander Martinez
 
Servicios en Zend Framework 2
Servicios en  Zend Framework 2Servicios en  Zend Framework 2
Servicios en Zend Framework 2El Taller Web
 
CLASE03_TEMA02_2.pptx
CLASE03_TEMA02_2.pptxCLASE03_TEMA02_2.pptx
CLASE03_TEMA02_2.pptxDiseoGrfico14
 
1.4 tecnologiasWeb.ppt
1.4 tecnologiasWeb.ppt1.4 tecnologiasWeb.ppt
1.4 tecnologiasWeb.pptJaime Ramos
 
Buenas Prácticas para la Construcción de Aplicaciones de Software
Buenas Prácticas para la Construcción de Aplicaciones de SoftwareBuenas Prácticas para la Construcción de Aplicaciones de Software
Buenas Prácticas para la Construcción de Aplicaciones de SoftwareJorge Alvarez
 

Ähnlich wie Formularios al limite (20)

(25/02) Desarrollador@S Invita - Introducción y novedades de SQL Server 2008
(25/02) Desarrollador@S Invita - Introducción y novedades de SQL Server 2008(25/02) Desarrollador@S Invita - Introducción y novedades de SQL Server 2008
(25/02) Desarrollador@S Invita - Introducción y novedades de SQL Server 2008
 
7-Unidad 2: Diseño de Vista-2.3 Introducción Web Services-Desarrollo
7-Unidad 2: Diseño de Vista-2.3 Introducción Web Services-Desarrollo7-Unidad 2: Diseño de Vista-2.3 Introducción Web Services-Desarrollo
7-Unidad 2: Diseño de Vista-2.3 Introducción Web Services-Desarrollo
 
Symfony2 un framework para maximizar tu productividad en desarrollo web
Symfony2 un framework para maximizar tu productividad en desarrollo webSymfony2 un framework para maximizar tu productividad en desarrollo web
Symfony2 un framework para maximizar tu productividad en desarrollo web
 
Angular Fundamentals
Angular FundamentalsAngular Fundamentals
Angular Fundamentals
 
7-Unidad 2: Diseños de Vista-2.3 Introducción Web Services-Desarrollo Ejemplos
7-Unidad 2: Diseños de Vista-2.3 Introducción Web Services-Desarrollo Ejemplos 7-Unidad 2: Diseños de Vista-2.3 Introducción Web Services-Desarrollo Ejemplos
7-Unidad 2: Diseños de Vista-2.3 Introducción Web Services-Desarrollo Ejemplos
 
Dynamics saturday madrid 2019 web api
Dynamics saturday madrid 2019   web apiDynamics saturday madrid 2019   web api
Dynamics saturday madrid 2019 web api
 
Patrones de diseño II
Patrones de diseño IIPatrones de diseño II
Patrones de diseño II
 
Todomir
TodomirTodomir
Todomir
 
Desarrollo de Aplicaciones Web II - Sesión 03 - Formularios y Validaciones
Desarrollo de Aplicaciones Web II - Sesión 03 - Formularios y ValidacionesDesarrollo de Aplicaciones Web II - Sesión 03 - Formularios y Validaciones
Desarrollo de Aplicaciones Web II - Sesión 03 - Formularios y Validaciones
 
Seminario html5
Seminario html5Seminario html5
Seminario html5
 
Ejemplos reales TPW
Ejemplos reales TPWEjemplos reales TPW
Ejemplos reales TPW
 
UDA-Componentes RUP. Formulario
UDA-Componentes RUP. FormularioUDA-Componentes RUP. Formulario
UDA-Componentes RUP. Formulario
 
UDA-Componentes RUP. Formulario (v2.1.1 deprecado)
UDA-Componentes RUP. Formulario  (v2.1.1 deprecado)UDA-Componentes RUP. Formulario  (v2.1.1 deprecado)
UDA-Componentes RUP. Formulario (v2.1.1 deprecado)
 
Servicios en Zend Framework 2
Servicios en  Zend Framework 2Servicios en  Zend Framework 2
Servicios en Zend Framework 2
 
Manage engine
Manage engineManage engine
Manage engine
 
CLASE03_TEMA02_2.pptx
CLASE03_TEMA02_2.pptxCLASE03_TEMA02_2.pptx
CLASE03_TEMA02_2.pptx
 
1.4 tecnologiasWeb.ppt
1.4 tecnologiasWeb.ppt1.4 tecnologiasWeb.ppt
1.4 tecnologiasWeb.ppt
 
Cliente/Servidor
Cliente/ServidorCliente/Servidor
Cliente/Servidor
 
Buenas Prácticas para la Construcción de Aplicaciones de Software
Buenas Prácticas para la Construcción de Aplicaciones de SoftwareBuenas Prácticas para la Construcción de Aplicaciones de Software
Buenas Prácticas para la Construcción de Aplicaciones de Software
 
ASP.NET MVC
ASP.NET MVCASP.NET MVC
ASP.NET MVC
 

Formularios al limite