Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Symfony Parte 5 Rodrigo Miranda [email_address] [email_address] http://www.rodrigomiranda.cl
Rodrigo Miranda Blog: www.rodrigomiranda.cl Crear Módulos de la Aplicación
Rodrigo Miranda Blog: www.rodrigomiranda.cl <ul><li>Crear  Módulos en aplicación Administrador: </li></ul><ul><li>Vamos a ...
Rodrigo Miranda Blog: www.rodrigomiranda.cl Módulos en aplicación Administrador <ul><li>Podríamos ocupar los siguientes co...
Rodrigo Miranda Blog: www.rodrigomiranda.cl <ul><li>Podemos agregar las siguientes opciones a ese comando . </li></ul><ul>...
Rodrigo Miranda Blog: www.rodrigomiranda.cl <ul><li>Probamos los módulos en las sgtes URLs: </li></ul><ul><li>http://encue...
Rodrigo Miranda Blog: www.rodrigomiranda.cl <ul><li>Si intentas agregar una nueva encuesta verás que Symfony muestra una e...
Rodrigo Miranda Blog: www.rodrigomiranda.cl <ul><li>Si intentamos guardar una nueva encuesta el formulario nos indica que ...
Rodrigo Miranda Blog: www.rodrigomiranda.cl Datos Iniciales, Prueba y de Usuarios
Rodrigo Miranda Blog: www.rodrigomiranda.cl <ul><li>Aunque hemos creado una estructura de base de datos básica, todas sus ...
Rodrigo Miranda Blog: www.rodrigomiranda.cl <ul><li>Datos iniciales:  Son datos que necesita la aplicación para funcionar....
Rodrigo Miranda Blog: www.rodrigomiranda.cl <ul><li>Cuando realizas el proceso de construir a mano el schema.yml y posteri...
Rodrigo Miranda Blog: www.rodrigomiranda.cl YAML
Rodrigo Miranda Blog: www.rodrigomiranda.cl <ul><li>YAML: </li></ul><ul><li>Formato para serializar datos que es fácil de ...
Rodrigo Miranda Blog: www.rodrigomiranda.cl <ul><li>Nos permite describir los datos como en XML, pero con una sintaxis muc...
Rodrigo Miranda Blog: www.rodrigomiranda.cl <ul><li>YAML utiliza la tabulación para indicar su estructura, los elementos q...
Rodrigo Miranda Blog: www.rodrigomiranda.cl
Rodrigo Miranda Blog: www.rodrigomiranda.cl <ul><li>YAML además nos provee de una notación abreviada. Los arreglos simples...
Rodrigo Miranda Blog: www.rodrigomiranda.cl
Rodrigo Miranda Blog: www.rodrigomiranda.cl Sintaxis:
Rodrigo Miranda Blog: www.rodrigomiranda.cl Arreglos Simples :
Rodrigo Miranda Blog: www.rodrigomiranda.cl Arreglos Asociativos :
Rodrigo Miranda Blog: www.rodrigomiranda.cl Crear algunos Datos Iniciales
Rodrigo Miranda Blog: www.rodrigomiranda.cl <ul><li>Crearemos archivos formato YAML y los guardaremos en el directorio dat...
Rodrigo Miranda Blog: www.rodrigomiranda.cl Organizacion:     Modelo primer_elemento:     Etiqueta nombre único   etique...
Rodrigo Miranda Blog: www.rodrigomiranda.cl TipoEncuesta:  primer_elemento:  etiqueta: Pregunta por Pregunta segundo_eleme...
Rodrigo Miranda Blog: www.rodrigomiranda.cl <ul><li>Cuando una cadena de texto contiene saltos de línea se utiliza el símb...
Rodrigo Miranda Blog: www.rodrigomiranda.cl <ul><li>El prefijo numérico de cada archivo es opcional, lo que buscamos es co...
Rodrigo Miranda Blog: www.rodrigomiranda.cl <ul><li>Una vez creados los archivos de datos ejecutamos: </li></ul>#./symfony...
Rodrigo Miranda Blog: www.rodrigomiranda.cl
Rodrigo Miranda Blog: www.rodrigomiranda.cl Arquitectura MVC
Rodrigo Miranda Blog: www.rodrigomiranda.cl Antes:
Rodrigo Miranda Blog: www.rodrigomiranda.cl <ul><li>Organiza el código en base a su función.  </li></ul>MVC (Modelo – Vist...
Rodrigo Miranda Blog: www.rodrigomiranda.cl MVC
Rodrigo Miranda Blog: www.rodrigomiranda.cl El MVC se aloja
Rodrigo Miranda Blog: www.rodrigomiranda.cl Layout
Rodrigo Miranda Blog: www.rodrigomiranda.cl <ul><li>En toda aplicación web existe código HTML o PHP que se repite . </li><...
Rodrigo Miranda Blog: www.rodrigomiranda.cl Solución Ineficiente
Rodrigo Miranda Blog: www.rodrigomiranda.cl Opción Eficiente
Rodrigo Miranda Blog: www.rodrigomiranda.cl Parte Importante de un Layout
Rodrigo Miranda Blog: www.rodrigomiranda.cl Hojas de estilos, imágenes y archivos JavaScript
Rodrigo Miranda Blog: www.rodrigomiranda.cl apps/miaplicacion/config/ view.yml
Rodrigo Miranda Blog: www.rodrigomiranda.cl
Rodrigo Miranda Blog: www.rodrigomiranda.cl Un subdirectorio CSS
Rodrigo Miranda Blog: www.rodrigomiranda.cl Agregando atributo media
Rodrigo Miranda Blog: www.rodrigomiranda.cl Acciones
Rodrigo Miranda Blog: www.rodrigomiranda.cl <ul><li>Se definen como métodos de una clase. </li></ul><ul><li>El nombre de l...
Rodrigo Miranda Blog: www.rodrigomiranda.cl apps/administrador/modules/encuesta/actions/actions.class.php
Rodrigo Miranda Blog: www.rodrigomiranda.cl <ul><li>Symfony utiliza una convención para deducir el nombre de una plantilla...
Rodrigo Miranda Blog: www.rodrigomiranda.cl apps/administrador/modules/encuesta/templates/ indexSuccess.php
Rodrigo Miranda Blog: www.rodrigomiranda.cl Revisamos códigos
Rodrigo Miranda Blog: www.rodrigomiranda.cl Petición y Respuesta
Rodrigo Miranda Blog: www.rodrigomiranda.cl <ul><li>Cuando accedes a una página como  encuesta/show/id/1  tú navegador env...
Rodrigo Miranda Blog: www.rodrigomiranda.cl <ul><li>Symfony encapsula la petición en un objeto llamado  sfWebRequest  y la...
Rodrigo Miranda Blog: www.rodrigomiranda.cl <ul><li>Objeto sfWebRequest </li></ul>
Rodrigo Miranda Blog: www.rodrigomiranda.cl <ul><li>Métodos sfWebRequest </li></ul>
Rodrigo Miranda Blog: www.rodrigomiranda.cl
Rodrigo Miranda Blog: www.rodrigomiranda.cl <ul><li>Objeto sfWebResponse </li></ul>
Rodrigo Miranda Blog: www.rodrigomiranda.cl <ul><li>Métodos sfWebResponse </li></ul>
Rodrigo Miranda Blog: www.rodrigomiranda.cl Sistema de Enrutamiento
Rodrigo Miranda Blog: www.rodrigomiranda.cl
Rodrigo Miranda Blog: www.rodrigomiranda.cl ‘ encuesta/show?id=‘ .$encuesta->getId() encuesta/show/id/1
Rodrigo Miranda Blog: www.rodrigomiranda.cl URI
Rodrigo Miranda Blog: www.rodrigomiranda.cl Configurando Enrutamiento
Rodrigo Miranda Blog: www.rodrigomiranda.cl <ul><li>Las conversiones entre URI internas y URL externas se define en el arc...
Rodrigo Miranda Blog: www.rodrigomiranda.cl
Rodrigo Miranda Blog: www.rodrigomiranda.cl
Rodrigo Miranda Blog: www.rodrigomiranda.cl Personalizando el enrutamiento
Rodrigo Miranda Blog: www.rodrigomiranda.cl
Rodrigo Miranda Blog: www.rodrigomiranda.cl <ul><li>Cuando se modifica la configuración de enrutamiento, los cambios se ap...
Rodrigo Miranda Blog: www.rodrigomiranda.cl URI abreviada
Rodrigo Miranda Blog: www.rodrigomiranda.cl Modificaciones al sistema.
Rodrigo Miranda Blog: www.rodrigomiranda.cl Preguntas?
Upcoming SlideShare
Loading in …5
×

Symfony parte 6

1,375 views

Published on

Estudios de códigos de Symfony. Modelo de Datos, controlador y comenzando la revisión de formularios.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Symfony parte 6

  1. 1. Symfony Parte 5 Rodrigo Miranda [email_address] [email_address] http://www.rodrigomiranda.cl
  2. 2. Rodrigo Miranda Blog: www.rodrigomiranda.cl Crear Módulos de la Aplicación
  3. 3. Rodrigo Miranda Blog: www.rodrigomiranda.cl <ul><li>Crear Módulos en aplicación Administrador: </li></ul><ul><li>Vamos a generar algunos módulos de la aplicación administrador. Para comenzar, vamos a construir dos: encuesta y grupo-pregunta. </li></ul><ul><li>Nos interesa generar el CRUD de cada uno de ellos; que es el acrónimo de las palabras inglesas “Creation/Retrieval/Update/Deletion (Crear, Obtener, Actualizar y Borrar). </li></ul>
  4. 4. Rodrigo Miranda Blog: www.rodrigomiranda.cl Módulos en aplicación Administrador <ul><li>Podríamos ocupar los siguientes comandos que ya conocemos. </li></ul><ul><li>Los cuales generan módulos llamados encuesta y grupo-pregunta en la aplicación administrador, basados en los modelos Encuesta y GrupoPregunta encontrados en el directorio lib/model del proyecto. </li></ul>#./symfony propel:generate-module administrador encuesta Encuesta #./symfony propel:generate-module administrador grupo-pregunta GrupoPregunta
  5. 5. Rodrigo Miranda Blog: www.rodrigomiranda.cl <ul><li>Podemos agregar las siguientes opciones a ese comando . </li></ul><ul><li>--with-show: Permite generar una acción y una plantilla específicas para visualizar los datos de un objeto. Esta plantilla solamente permite visualizar los datos, no modificarlos. </li></ul><ul><li>--non-atomic-actions: Dado que el flujo de trabajo de los formulario de este módulo se controla mediante métodos create , edit y update . Podríamos crear un único método que se encargue de estas funcionalidades </li></ul>Módulos en aplicación Administrador
  6. 6. Rodrigo Miranda Blog: www.rodrigomiranda.cl <ul><li>Probamos los módulos en las sgtes URLs: </li></ul><ul><li>http://encuesta.localhost/administrador_dev.php/encuesta </li></ul><ul><li>http://encuesta.localhost/administrador_dev.php/grupopregunta </li></ul><ul><li>Nota: Los problemas que puedes encontrar ya estás en condiciones de solucionarlos. </li></ul>Módulos en aplicación Administrador
  7. 7. Rodrigo Miranda Blog: www.rodrigomiranda.cl <ul><li>Si intentas agregar una nueva encuesta verás que Symfony muestra una excepción, ya que no se ha indicado una representación en forma de texto de los objetos referenciados. </li></ul><ul><li>Para solventarlo utiliza el método mágico __toString. En las clases que indica Symfony ( TipoEncuesta y Organizacion ) que se encuentran en lib/model . </li></ul>Módulos en aplicación Administrador
  8. 8. Rodrigo Miranda Blog: www.rodrigomiranda.cl <ul><li>Si intentamos guardar una nueva encuesta el formulario nos indica que existen campos requeridos que debo llenar. En los campos textos puedo colocar algo de información, pero no puedo hacer lo mismo en los campos tipo Select. Es necesario al parecer tener datos iniciales en el sistema. </li></ul>Módulos en aplicación Administrador
  9. 9. Rodrigo Miranda Blog: www.rodrigomiranda.cl Datos Iniciales, Prueba y de Usuarios
  10. 10. Rodrigo Miranda Blog: www.rodrigomiranda.cl <ul><li>Aunque hemos creado una estructura de base de datos básica, todas sus tablas están vacías. En cualquier aplicación web siempren existen tres tipos de datos, por lo tanto comenzaremos a solucionarlo. </li></ul>Módulos en aplicación Administrador
  11. 11. Rodrigo Miranda Blog: www.rodrigomiranda.cl <ul><li>Datos iniciales: Son datos que necesita la aplicación para funcionar. Para este caso, necesitamos nombres de algunas categorías y tipos que son fk en otras tablas. </li></ul><ul><li>Datos de pruebas: Son los datos para probar la aplicación. Los buenos programadores crean pruebas unitarias para asegurar que la aplicación se comporta tal y como se describe en los escenarios. La mejor forma de probar la aplicación consiste en realizar pruebas unitarias automáticas. </li></ul><ul><li>Datos de usuarios: Son los datos reales creados por lo usuarios que utilizan la aplicación. </li></ul>Módulos en aplicación Administrador
  12. 12. Rodrigo Miranda Blog: www.rodrigomiranda.cl <ul><li>Cuando realizas el proceso de construir a mano el schema.yml y posteriormente desde él generar la estructura de la base de datos, debes considerar que symfony al generar las tablas elimina toda la información en ellas. Sin embargo, como nosotros generamos el schema desde la estructura de la base de datos ya creada, realizando el proceso inverso, no nos preocuparemos ;-) . </li></ul>Módulos en aplicación Administrador
  13. 13. Rodrigo Miranda Blog: www.rodrigomiranda.cl YAML
  14. 14. Rodrigo Miranda Blog: www.rodrigomiranda.cl <ul><li>YAML: </li></ul><ul><li>Formato para serializar datos que es fácil de leer por las personas, computadores o máquinas y es compatible con todos los lenguajes de programación . </li></ul>
  15. 15. Rodrigo Miranda Blog: www.rodrigomiranda.cl <ul><li>Nos permite describir los datos como en XML, pero con una sintaxis mucho más sencilla. Es útil para describir datos que pueden ser transformados en arrays simples y asociativos . </li></ul>
  16. 16. Rodrigo Miranda Blog: www.rodrigomiranda.cl <ul><li>YAML utiliza la tabulación para indicar su estructura, los elementos que forman una secuencia utilizan un guión medio y los pares clave/valor de los array asociativos se separan con dos puntos. </li></ul>
  17. 17. Rodrigo Miranda Blog: www.rodrigomiranda.cl
  18. 18. Rodrigo Miranda Blog: www.rodrigomiranda.cl <ul><li>YAML además nos provee de una notación abreviada. Los arreglos simples se definen con [ ] y los arreglos asociativos con { } . </li></ul>
  19. 19. Rodrigo Miranda Blog: www.rodrigomiranda.cl
  20. 20. Rodrigo Miranda Blog: www.rodrigomiranda.cl Sintaxis:
  21. 21. Rodrigo Miranda Blog: www.rodrigomiranda.cl Arreglos Simples :
  22. 22. Rodrigo Miranda Blog: www.rodrigomiranda.cl Arreglos Asociativos :
  23. 23. Rodrigo Miranda Blog: www.rodrigomiranda.cl Crear algunos Datos Iniciales
  24. 24. Rodrigo Miranda Blog: www.rodrigomiranda.cl <ul><li>Crearemos archivos formato YAML y los guardaremos en el directorio data/fixture . </li></ul>
  25. 25. Rodrigo Miranda Blog: www.rodrigomiranda.cl Organizacion:  Modelo primer_elemento:  Etiqueta nombre único etiqueta: Poodu  Columna a llenar segundo_elemento: etiqueta: Conicyt tercer_elemento: etiqueta: Google data/fixtures/010_organizacion.yml
  26. 26. Rodrigo Miranda Blog: www.rodrigomiranda.cl TipoEncuesta: primer_elemento: etiqueta: Pregunta por Pregunta segundo_elemento: etiqueta: Sección por Sección tercer_elemento: etiqueta: Todos en Uno data/fixtures/020_tipoencuesta.yml
  27. 27. Rodrigo Miranda Blog: www.rodrigomiranda.cl <ul><li>Cuando una cadena de texto contiene saltos de línea se utiliza el símbolo | para indicar que la cadena de texto ocupa varias líneas. </li></ul>
  28. 28. Rodrigo Miranda Blog: www.rodrigomiranda.cl <ul><li>El prefijo numérico de cada archivo es opcional, lo que buscamos es controlar el orden en el que se cargan los datos. Y además, por si más adelante creamos archivos que se deben cargar entre medio de dos ya existente . </li></ul>
  29. 29. Rodrigo Miranda Blog: www.rodrigomiranda.cl <ul><li>Una vez creados los archivos de datos ejecutamos: </li></ul>#./symfony propel:data-load
  30. 30. Rodrigo Miranda Blog: www.rodrigomiranda.cl
  31. 31. Rodrigo Miranda Blog: www.rodrigomiranda.cl Arquitectura MVC
  32. 32. Rodrigo Miranda Blog: www.rodrigomiranda.cl Antes:
  33. 33. Rodrigo Miranda Blog: www.rodrigomiranda.cl <ul><li>Organiza el código en base a su función. </li></ul>MVC (Modelo – Vista – Controlador)
  34. 34. Rodrigo Miranda Blog: www.rodrigomiranda.cl MVC
  35. 35. Rodrigo Miranda Blog: www.rodrigomiranda.cl El MVC se aloja
  36. 36. Rodrigo Miranda Blog: www.rodrigomiranda.cl Layout
  37. 37. Rodrigo Miranda Blog: www.rodrigomiranda.cl <ul><li>En toda aplicación web existe código HTML o PHP que se repite . </li></ul>
  38. 38. Rodrigo Miranda Blog: www.rodrigomiranda.cl Solución Ineficiente
  39. 39. Rodrigo Miranda Blog: www.rodrigomiranda.cl Opción Eficiente
  40. 40. Rodrigo Miranda Blog: www.rodrigomiranda.cl Parte Importante de un Layout
  41. 41. Rodrigo Miranda Blog: www.rodrigomiranda.cl Hojas de estilos, imágenes y archivos JavaScript
  42. 42. Rodrigo Miranda Blog: www.rodrigomiranda.cl apps/miaplicacion/config/ view.yml
  43. 43. Rodrigo Miranda Blog: www.rodrigomiranda.cl
  44. 44. Rodrigo Miranda Blog: www.rodrigomiranda.cl Un subdirectorio CSS
  45. 45. Rodrigo Miranda Blog: www.rodrigomiranda.cl Agregando atributo media
  46. 46. Rodrigo Miranda Blog: www.rodrigomiranda.cl Acciones
  47. 47. Rodrigo Miranda Blog: www.rodrigomiranda.cl <ul><li>Se definen como métodos de una clase. </li></ul><ul><li>El nombre de la clase que contiene a cada una de las acciones o métodos, comienza con el nombre del módulo seguida por la palabra Actions. </li></ul>Acciones
  48. 48. Rodrigo Miranda Blog: www.rodrigomiranda.cl apps/administrador/modules/encuesta/actions/actions.class.php
  49. 49. Rodrigo Miranda Blog: www.rodrigomiranda.cl <ul><li>Symfony utiliza una convención para deducir el nombre de una plantilla asociada a cada acción, que consiste en la acción seguida de la palabra Success . </li></ul>Plantilla o templates
  50. 50. Rodrigo Miranda Blog: www.rodrigomiranda.cl apps/administrador/modules/encuesta/templates/ indexSuccess.php
  51. 51. Rodrigo Miranda Blog: www.rodrigomiranda.cl Revisamos códigos
  52. 52. Rodrigo Miranda Blog: www.rodrigomiranda.cl Petición y Respuesta
  53. 53. Rodrigo Miranda Blog: www.rodrigomiranda.cl <ul><li>Cuando accedes a una página como encuesta/show/id/1 tú navegador envía una petición y el servidor web devuelve una respuesta . </li></ul>Petición y Respuesta
  54. 54. Rodrigo Miranda Blog: www.rodrigomiranda.cl <ul><li>Symfony encapsula la petición en un objeto llamado sfWebRequest y la respuesta en un objeto sfWebResponse. </li></ul>
  55. 55. Rodrigo Miranda Blog: www.rodrigomiranda.cl <ul><li>Objeto sfWebRequest </li></ul>
  56. 56. Rodrigo Miranda Blog: www.rodrigomiranda.cl <ul><li>Métodos sfWebRequest </li></ul>
  57. 57. Rodrigo Miranda Blog: www.rodrigomiranda.cl
  58. 58. Rodrigo Miranda Blog: www.rodrigomiranda.cl <ul><li>Objeto sfWebResponse </li></ul>
  59. 59. Rodrigo Miranda Blog: www.rodrigomiranda.cl <ul><li>Métodos sfWebResponse </li></ul>
  60. 60. Rodrigo Miranda Blog: www.rodrigomiranda.cl Sistema de Enrutamiento
  61. 61. Rodrigo Miranda Blog: www.rodrigomiranda.cl
  62. 62. Rodrigo Miranda Blog: www.rodrigomiranda.cl ‘ encuesta/show?id=‘ .$encuesta->getId() encuesta/show/id/1
  63. 63. Rodrigo Miranda Blog: www.rodrigomiranda.cl URI
  64. 64. Rodrigo Miranda Blog: www.rodrigomiranda.cl Configurando Enrutamiento
  65. 65. Rodrigo Miranda Blog: www.rodrigomiranda.cl <ul><li>Las conversiones entre URI internas y URL externas se define en el archivo de configuración routing.yml dentro del directorio config de las aplicaciones. </li></ul>
  66. 66. Rodrigo Miranda Blog: www.rodrigomiranda.cl
  67. 67. Rodrigo Miranda Blog: www.rodrigomiranda.cl
  68. 68. Rodrigo Miranda Blog: www.rodrigomiranda.cl Personalizando el enrutamiento
  69. 69. Rodrigo Miranda Blog: www.rodrigomiranda.cl
  70. 70. Rodrigo Miranda Blog: www.rodrigomiranda.cl <ul><li>Cuando se modifica la configuración de enrutamiento, los cambios se aplican instantáneamente en el entorno de desarrollo. Para el entorno de producción es necesario borrar las caché. </li></ul>
  71. 71. Rodrigo Miranda Blog: www.rodrigomiranda.cl URI abreviada
  72. 72. Rodrigo Miranda Blog: www.rodrigomiranda.cl Modificaciones al sistema.
  73. 73. Rodrigo Miranda Blog: www.rodrigomiranda.cl Preguntas?

×