SlideShare a Scribd company logo
1 of 73
Symfony
              Parte 5

 Rodrigo Miranda
    rmiranda@poodu.cl
contacto@rodrigomiranda.cl
http://www.rodrigomiranda.cl
Crear
Módulos
de
la

    Aplicación




         Rodrigo Miranda
     Blog: www.rodrigomiranda.cl
Crear

Módulos
en
aplicación
Administrador:

•  Vamos a generar algunos módulos de la aplicación
   administrador. Para comenzar, vamos a construir
   dos: encuesta y grupo-pregunta.

•  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).


                       Rodrigo Miranda
                   Blog: www.rodrigomiranda.cl
Módulos en aplicación Administrador


  •  Podríamos ocupar los siguientes comandos que ya
     conocemos.

#./symfony propel:generate-module administrador encuesta
Encuesta
#./symfony propel:generate-module administrador grupo-
pregunta GrupoPregunta


   •  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.

                               Rodrigo Miranda
                           Blog: www.rodrigomiranda.cl
Módulos en aplicación Administrador


•  Podemos agregar las siguientes opciones a ese
   comando.

    --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.

 --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
                               Rodrigo Miranda
                           Blog: www.rodrigomiranda.cl
Módulos en aplicación Administrador



 Probamos
los
módulos
en
las
sgtes
URLs:
 •  http://encuesta.localhost/administrador_dev.php/encuesta



 •  http://encuesta.localhost/administrador_dev.php/
    grupopregunta

 •  Nota: Los problemas que puedes encontrar ya estás en
    condiciones de solucionarlos.


                               Rodrigo Miranda
                           Blog: www.rodrigomiranda.cl
Módulos en aplicación Administrador


•  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.

  Para solventarlo utiliza el método mágico
  __toString. En las clases que indica Symfony
  ( Ti p o E n c u e s t a y O r g a n i z a c i o n ) q u e s e
  encuentran en lib/model.
                               Rodrigo Miranda
                           Blog: www.rodrigomiranda.cl
Módulos en aplicación Administrador




•  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.

                               Rodrigo Miranda
                           Blog: www.rodrigomiranda.cl
Datos
Iniciales,
Prueba
y
de

          Usuarios




              Rodrigo Miranda
          Blog: www.rodrigomiranda.cl
Módulos en aplicación Administrador




  unque hemos creado una estructura de base de
 A
   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.



                               Rodrigo Miranda
                           Blog: www.rodrigomiranda.cl
Módulos en aplicación Administrador


•  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.

•  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.

•  Datos de usuarios: Son los datos reales creados por lo
   usuarios que utilizan la aplicación.
                               Rodrigo Miranda
                           Blog: www.rodrigomiranda.cl
Módulos en aplicación Administrador


   uando realizas el proceso de construir a mano el
  C
   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 ;-) .
                               Rodrigo Miranda
                           Blog: www.rodrigomiranda.cl
YAML




    Rodrigo Miranda
Blog: www.rodrigomiranda.cl
YAML:

•  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.


                    Rodrigo Miranda
                Blog: www.rodrigomiranda.cl
•  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.

                    Rodrigo Miranda
                Blog: www.rodrigomiranda.cl
•  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.

                    Rodrigo Miranda
                Blog: www.rodrigomiranda.cl
Rodrigo Miranda
Blog: www.rodrigomiranda.cl
•  YAML además nos provee de una notación
 abreviada. Los arreglos simples se definen
 con [ ] y los arreglos asociativos con { }.




                    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
Asocia>vos:




                 Rodrigo Miranda
             Blog: www.rodrigomiranda.cl
Crear
algunos
Datos
Iniciales




              Rodrigo Miranda
          Blog: www.rodrigomiranda.cl
•  Crearemos archivos formato YAML y los
 guardaremos en el directorio data/fixture.




                   Rodrigo Miranda
               Blog: www.rodrigomiranda.cl
data/fixtures/010_organizacion.yml


Organizacion:                   Modelo
 primer_elemento:              Etiqueta nombre único
   etiqueta: Poodu              Columna a llenar

 segundo_elemento:
   etiqueta: Conicyt

 tercer_elemento:
   etiqueta: Google
                              Rodrigo Miranda
                          Blog: www.rodrigomiranda.cl
data/fixtures/020_tipoencuesta.yml


TipoEncuesta:
  primer_elemento:
    etiqueta: Pregunta por Pregunta

  segundo_elemento:
    etiqueta: Sección por Sección

  tercer_elemento:
    etiqueta: Todos en Uno
                              Rodrigo Miranda
                          Blog: www.rodrigomiranda.cl
•  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.


                       Rodrigo Miranda
                   Blog: www.rodrigomiranda.cl
•  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.

                    Rodrigo Miranda
                Blog: www.rodrigomiranda.cl
•  Una vez creados los archivos de datos
  ejecutamos:

#./symfony propel:data-load




                       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
MVC
(Modelo
–
Vista
–
Controlador)


•  Organiza el código en base a su función.




                    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
•  En toda aplicación web existe código
 HTML o PHP que se repite.




                    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
esAlos,
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
Acciones

•  Se definen como métodos de una clase.

 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.

                   Rodrigo Miranda
               Blog: www.rodrigomiranda.cl
apps/administrador/modules/encuesta/actions/actions.class.php




                             Rodrigo Miranda
                         Blog: www.rodrigomiranda.cl
Plan>lla
o
templates

•  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.


                   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
PeAción
y
Respuesta




         Rodrigo Miranda
     Blog: www.rodrigomiranda.cl
Pe>ción
y
Respuesta

•  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.


                   Rodrigo Miranda
               Blog: www.rodrigomiranda.cl
•  Symfony encapsula la petición en un
 objeto llamado sfWebRequest y la
 respuesta en un objeto sfWebResponse.




                  Rodrigo Miranda
              Blog: www.rodrigomiranda.cl
•  Objeto sfWebRequest




                  Rodrigo Miranda
              Blog: www.rodrigomiranda.cl
•  Métodos sfWebRequest




                 Rodrigo Miranda
             Blog: www.rodrigomiranda.cl
Rodrigo Miranda
Blog: www.rodrigomiranda.cl
•  Objeto sfWebResponse




                 Rodrigo Miranda
             Blog: www.rodrigomiranda.cl
•  Métodos sfWebResponse




                 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
•  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.



                    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
•  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é.


                    Rodrigo Miranda
                Blog: www.rodrigomiranda.cl
URI
abreviada




                Rodrigo Miranda
            Blog: www.rodrigomiranda.cl
Modificaciones
al
sistema.




            Rodrigo Miranda
        Blog: www.rodrigomiranda.cl
Preguntas?




    Rodrigo Miranda
Blog: www.rodrigomiranda.cl

More Related Content

Similar to Symfony Parte 5

Symfony Pruebas Unitarias
Symfony Pruebas UnitariasSymfony Pruebas Unitarias
Symfony Pruebas UnitariasRodrigo Miranda
 
Joomla!Day 2013 España - Taller de Desarrollo de Plantillas Joomla! - Sergio ...
Joomla!Day 2013 España - Taller de Desarrollo de Plantillas Joomla! - Sergio ...Joomla!Day 2013 España - Taller de Desarrollo de Plantillas Joomla! - Sergio ...
Joomla!Day 2013 España - Taller de Desarrollo de Plantillas Joomla! - Sergio ...SergioIglesiasNET
 
Combinación ganadora: Plone como CMS, tu framework preferido como frontend
Combinación ganadora: Plone como CMS, tu framework preferido como frontendCombinación ganadora: Plone como CMS, tu framework preferido como frontend
Combinación ganadora: Plone como CMS, tu framework preferido como frontendmenttes
 
Django - Curso Básico - Principales Conceptos
Django - Curso Básico - Principales ConceptosDjango - Curso Básico - Principales Conceptos
Django - Curso Básico - Principales ConceptosGeorge Navarro Gomez
 
Django - Curso Básico - Principales Conceptos
Django - Curso Básico - Principales ConceptosDjango - Curso Básico - Principales Conceptos
Django - Curso Básico - Principales ConceptosGeorge Navarro Gomez
 
#JoomlaIO - Desarrollo de Plantillas para Joomla!
#JoomlaIO - Desarrollo de Plantillas para Joomla!#JoomlaIO - Desarrollo de Plantillas para Joomla!
#JoomlaIO - Desarrollo de Plantillas para Joomla!SergioIglesiasNET
 
Construcción de un siti web
Construcción de un siti webConstrucción de un siti web
Construcción de un siti webmascorroale
 
Aprende programar-6330
Aprende programar-6330Aprende programar-6330
Aprende programar-6330ANDRAM1224
 

Similar to Symfony Parte 5 (20)

Symfony parte 16
Symfony parte 16Symfony parte 16
Symfony parte 16
 
Symfony Pruebas Unitarias
Symfony Pruebas UnitariasSymfony Pruebas Unitarias
Symfony Pruebas Unitarias
 
Joomla!Day 2013 España - Taller de Desarrollo de Plantillas Joomla! - Sergio ...
Joomla!Day 2013 España - Taller de Desarrollo de Plantillas Joomla! - Sergio ...Joomla!Day 2013 España - Taller de Desarrollo de Plantillas Joomla! - Sergio ...
Joomla!Day 2013 España - Taller de Desarrollo de Plantillas Joomla! - Sergio ...
 
Symfony parte 13
Symfony parte 13Symfony parte 13
Symfony parte 13
 
Computación 1 cb09101
Computación 1 cb09101Computación 1 cb09101
Computación 1 cb09101
 
Combinación ganadora: Plone como CMS, tu framework preferido como frontend
Combinación ganadora: Plone como CMS, tu framework preferido como frontendCombinación ganadora: Plone como CMS, tu framework preferido como frontend
Combinación ganadora: Plone como CMS, tu framework preferido como frontend
 
Django - Curso Básico - Principales Conceptos
Django - Curso Básico - Principales ConceptosDjango - Curso Básico - Principales Conceptos
Django - Curso Básico - Principales Conceptos
 
Django - Curso Básico - Principales Conceptos
Django - Curso Básico - Principales ConceptosDjango - Curso Básico - Principales Conceptos
Django - Curso Básico - Principales Conceptos
 
#JoomlaIO - Desarrollo de Plantillas para Joomla!
#JoomlaIO - Desarrollo de Plantillas para Joomla!#JoomlaIO - Desarrollo de Plantillas para Joomla!
#JoomlaIO - Desarrollo de Plantillas para Joomla!
 
Django
DjangoDjango
Django
 
Computación 1 y 3
Computación 1 y 3Computación 1 y 3
Computación 1 y 3
 
Computación i 9101
Computación i 9101Computación i 9101
Computación i 9101
 
Symfony parte 17
Symfony parte 17Symfony parte 17
Symfony parte 17
 
Computación 1 cb09101
Computación 1 cb09101Computación 1 cb09101
Computación 1 cb09101
 
Symfony Parte 2
Symfony Parte 2Symfony Parte 2
Symfony Parte 2
 
Introducción a Django
Introducción a DjangoIntroducción a Django
Introducción a Django
 
Construcción de un siti web
Construcción de un siti webConstrucción de un siti web
Construcción de un siti web
 
Computación i 9101
Computación i 9101Computación i 9101
Computación i 9101
 
Aprende programar-6330
Aprende programar-6330Aprende programar-6330
Aprende programar-6330
 
Aprende programar-6330
Aprende programar-6330Aprende programar-6330
Aprende programar-6330
 

More from Rodrigo Miranda

Symfony Consultas Sql Criterion Hydrate
Symfony Consultas Sql Criterion  HydrateSymfony Consultas Sql Criterion  Hydrate
Symfony Consultas Sql Criterion HydrateRodrigo Miranda
 
Symfony Consultas Sql Criterion Hydrate
Symfony Consultas Sql Criterion  HydrateSymfony Consultas Sql Criterion  Hydrate
Symfony Consultas Sql Criterion HydrateRodrigo Miranda
 
Symfony Consultas Sql Criterion Hydrate
Symfony Consultas Sql Criterion  HydrateSymfony Consultas Sql Criterion  Hydrate
Symfony Consultas Sql Criterion HydrateRodrigo Miranda
 
Symfony parte 15 Consultas y Migración
Symfony parte 15 Consultas y MigraciónSymfony parte 15 Consultas y Migración
Symfony parte 15 Consultas y MigraciónRodrigo Miranda
 
Symfony parte 14 Consultas SQL - Páginador
Symfony parte 14 Consultas SQL - PáginadorSymfony parte 14 Consultas SQL - Páginador
Symfony parte 14 Consultas SQL - PáginadorRodrigo Miranda
 
Symfony parte 11 Formularios
Symfony parte 11 FormulariosSymfony parte 11 Formularios
Symfony parte 11 FormulariosRodrigo Miranda
 
Adentrándonos al Framework Symfony
Adentrándonos al  Framework SymfonyAdentrándonos al  Framework Symfony
Adentrándonos al Framework SymfonyRodrigo Miranda
 
Introducción Nivelación PHP
Introducción Nivelación PHPIntroducción Nivelación PHP
Introducción Nivelación PHPRodrigo Miranda
 
Ticnet capacita en Plataforma de Aprendizaje Moodle
Ticnet capacita en Plataforma de Aprendizaje MoodleTicnet capacita en Plataforma de Aprendizaje Moodle
Ticnet capacita en Plataforma de Aprendizaje MoodleRodrigo Miranda
 
Ticnet Capacita en la Plataforma de Aprendizaje Moodle
Ticnet Capacita en la Plataforma de Aprendizaje Moodle Ticnet Capacita en la Plataforma de Aprendizaje Moodle
Ticnet Capacita en la Plataforma de Aprendizaje Moodle Rodrigo Miranda
 

More from Rodrigo Miranda (18)

Symfony Consultas Sql Criterion Hydrate
Symfony Consultas Sql Criterion  HydrateSymfony Consultas Sql Criterion  Hydrate
Symfony Consultas Sql Criterion Hydrate
 
Symfony Consultas Sql Criterion Hydrate
Symfony Consultas Sql Criterion  HydrateSymfony Consultas Sql Criterion  Hydrate
Symfony Consultas Sql Criterion Hydrate
 
Symfony Consultas Sql Criterion Hydrate
Symfony Consultas Sql Criterion  HydrateSymfony Consultas Sql Criterion  Hydrate
Symfony Consultas Sql Criterion Hydrate
 
Symfony parte 18
Symfony parte 18Symfony parte 18
Symfony parte 18
 
Symfony parte 15 Consultas y Migración
Symfony parte 15 Consultas y MigraciónSymfony parte 15 Consultas y Migración
Symfony parte 15 Consultas y Migración
 
Symfony parte 14 Consultas SQL - Páginador
Symfony parte 14 Consultas SQL - PáginadorSymfony parte 14 Consultas SQL - Páginador
Symfony parte 14 Consultas SQL - Páginador
 
Symfony parte 12
Symfony parte 12Symfony parte 12
Symfony parte 12
 
Symfony parte 11 Formularios
Symfony parte 11 FormulariosSymfony parte 11 Formularios
Symfony parte 11 Formularios
 
Symfony parte 10
Symfony parte 10Symfony parte 10
Symfony parte 10
 
Symfony parte 9
Symfony parte 9Symfony parte 9
Symfony parte 9
 
Symfony parte 8
Symfony parte 8Symfony parte 8
Symfony parte 8
 
Symfony parte 7
Symfony parte 7Symfony parte 7
Symfony parte 7
 
Symfony Parte 3
Symfony Parte 3Symfony Parte 3
Symfony Parte 3
 
Adentrándonos al Framework Symfony
Adentrándonos al  Framework SymfonyAdentrándonos al  Framework Symfony
Adentrándonos al Framework Symfony
 
Adentrándonos a PHP 5
Adentrándonos a PHP 5Adentrándonos a PHP 5
Adentrándonos a PHP 5
 
Introducción Nivelación PHP
Introducción Nivelación PHPIntroducción Nivelación PHP
Introducción Nivelación PHP
 
Ticnet capacita en Plataforma de Aprendizaje Moodle
Ticnet capacita en Plataforma de Aprendizaje MoodleTicnet capacita en Plataforma de Aprendizaje Moodle
Ticnet capacita en Plataforma de Aprendizaje Moodle
 
Ticnet Capacita en la Plataforma de Aprendizaje Moodle
Ticnet Capacita en la Plataforma de Aprendizaje Moodle Ticnet Capacita en la Plataforma de Aprendizaje Moodle
Ticnet Capacita en la Plataforma de Aprendizaje Moodle
 

Recently uploaded

La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfjeondanny1997
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxAlexander López
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxGESTECPERUSAC
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMidwarHenryLOZAFLORE
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxJOSEMANUELHERNANDEZH11
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativaAdrianaMartnez618894
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptJavierHerrera662252
 
Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel tallerValentinaTabares11
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOnarvaezisabella21
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxMariaBurgos55
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 

Recently uploaded (20)

La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptx
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptx
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptx
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativa
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
 
Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel taller
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptx
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 

Symfony Parte 5

  • 1. Symfony Parte 5 Rodrigo Miranda rmiranda@poodu.cl contacto@rodrigomiranda.cl http://www.rodrigomiranda.cl
  • 2. Crear
Módulos
de
la
 Aplicación
 Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 3. Crear

Módulos
en
aplicación
Administrador: •  Vamos a generar algunos módulos de la aplicación administrador. Para comenzar, vamos a construir dos: encuesta y grupo-pregunta. •  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). Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 4. Módulos en aplicación Administrador •  Podríamos ocupar los siguientes comandos que ya conocemos. #./symfony propel:generate-module administrador encuesta Encuesta #./symfony propel:generate-module administrador grupo- pregunta GrupoPregunta •  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. Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 5. Módulos en aplicación Administrador •  Podemos agregar las siguientes opciones a ese comando. --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. --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 Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 6. Módulos en aplicación Administrador Probamos
los
módulos
en
las
sgtes
URLs: •  http://encuesta.localhost/administrador_dev.php/encuesta •  http://encuesta.localhost/administrador_dev.php/ grupopregunta •  Nota: Los problemas que puedes encontrar ya estás en condiciones de solucionarlos. Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 7. Módulos en aplicación Administrador •  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. Para solventarlo utiliza el método mágico __toString. En las clases que indica Symfony ( Ti p o E n c u e s t a y O r g a n i z a c i o n ) q u e s e encuentran en lib/model. Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 8. Módulos en aplicación Administrador •  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. Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 9. Datos
Iniciales,
Prueba
y
de
 Usuarios
 Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 10. Módulos en aplicación Administrador   unque hemos creado una estructura de base de A 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. Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 11. Módulos en aplicación Administrador •  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. •  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. •  Datos de usuarios: Son los datos reales creados por lo usuarios que utilizan la aplicación. Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 12. Módulos en aplicación Administrador   uando realizas el proceso de construir a mano el C 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 ;-) . Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 13. YAML
 Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 14. YAML: •  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. Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 15. •  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. Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 16. •  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. Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 18. •  YAML además nos provee de una notación abreviada. Los arreglos simples se definen con [ ] y los arreglos asociativos con { }. Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 20. Sintaxis: Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 21. Arreglos
Simples: Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 22. Arreglos
Asocia>vos: Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 23. Crear
algunos
Datos
Iniciales
 Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 24. •  Crearemos archivos formato YAML y los guardaremos en el directorio data/fixture. Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 25. data/fixtures/010_organizacion.yml Organizacion:  Modelo primer_elemento:  Etiqueta nombre único etiqueta: Poodu  Columna a llenar segundo_elemento: etiqueta: Conicyt tercer_elemento: etiqueta: Google Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 26. data/fixtures/020_tipoencuesta.yml TipoEncuesta: primer_elemento: etiqueta: Pregunta por Pregunta segundo_elemento: etiqueta: Sección por Sección tercer_elemento: etiqueta: Todos en Uno Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 27. •  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. Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 28. •  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. Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 29. •  Una vez creados los archivos de datos ejecutamos: #./symfony propel:data-load Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 31. Arquitectura
MVC
 Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 32. Antes: Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 33. MVC
(Modelo
–
Vista
–
Controlador) •  Organiza el código en base a su función. Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 34. MVC Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 35. El
MVC
se
aloja
 Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 36. Layout
 Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 37. •  En toda aplicación web existe código HTML o PHP que se repite. Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 38. Solución
Ineficiente Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 39. Opción
Eficiente Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 40. Parte
Importante
de
un
Layout Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 41. Hojas
de
esAlos,
imágenes
y
 archivos
JavaScript
 Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 42. apps/miaplicacion/config/view.yml Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 44. Un
subdirectorio
CSS Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 45. Agregando
atributo
media Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 46. Acciones
 Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 47. Acciones •  Se definen como métodos de una clase. 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. Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 48. apps/administrador/modules/encuesta/actions/actions.class.php Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 49. Plan>lla
o
templates •  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. Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 50. apps/administrador/modules/encuesta/templates/indexSuccess.php Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 51. Revisamos
códigos
 Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 52. PeAción
y
Respuesta
 Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 53. Pe>ción
y
Respuesta •  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. Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 54. •  Symfony encapsula la petición en un objeto llamado sfWebRequest y la respuesta en un objeto sfWebResponse. Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 55. •  Objeto sfWebRequest Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 56. •  Métodos sfWebRequest Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 58. •  Objeto sfWebResponse Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 59. •  Métodos sfWebResponse Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 60. Sistema
de
Enrutamiento
 Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 62. ‘encuesta/show?id=‘.$encuesta->getId() encuesta/show/id/1 Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 63. URI Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 64. Configurando
Enrutamiento
 Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 65. •  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. Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 68. Personalizando
el
 enrutamiento
 Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 70. •  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é. Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 71. URI
abreviada Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 72. Modificaciones
al
sistema.
 Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 73. Preguntas?
 Rodrigo Miranda Blog: www.rodrigomiranda.cl