SlideShare una empresa de Scribd logo
1 de 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

Más contenido relacionado

Similar a 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 a 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
 

Más de 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
 

Más de 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
 

Último

Chat GPT para la educación Latinoamerica
Chat GPT para la educación LatinoamericaChat GPT para la educación Latinoamerica
Chat GPT para la educación LatinoamericaEdwinGarca59
 
Electricidad Libro compendio de temas estudiados.docx
Electricidad Libro compendio de temas estudiados.docxElectricidad Libro compendio de temas estudiados.docx
Electricidad Libro compendio de temas estudiados.docxCsarNlsonMrquezContr
 
Imágenes digitales: Calidad de la información
Imágenes digitales: Calidad de la informaciónImágenes digitales: Calidad de la información
Imágenes digitales: Calidad de la informaciónUniversidad de Sonora
 
PRÁCTICA Nº 4: “Análisis de secuencias del ADN con el software BioEdit y uso ...
PRÁCTICA Nº 4: “Análisis de secuencias del ADN con el software BioEdit y uso ...PRÁCTICA Nº 4: “Análisis de secuencias del ADN con el software BioEdit y uso ...
PRÁCTICA Nº 4: “Análisis de secuencias del ADN con el software BioEdit y uso ...dramosbrise1403
 
editorial de informática de los sueños.docx
editorial de informática de los sueños.docxeditorial de informática de los sueños.docx
editorial de informática de los sueños.docxssusere34b451
 
Ejercicio 1 periodo 2 de Tecnología 2024
Ejercicio 1 periodo 2 de Tecnología 2024Ejercicio 1 periodo 2 de Tecnología 2024
Ejercicio 1 periodo 2 de Tecnología 2024NicolleAndrade7
 
Tipos de Datos de Microsoft Access-JOEL GARCIA.pptx
Tipos de Datos de Microsoft Access-JOEL GARCIA.pptxTipos de Datos de Microsoft Access-JOEL GARCIA.pptx
Tipos de Datos de Microsoft Access-JOEL GARCIA.pptxJOELGARCIA849853
 
BUSCADORES DE INTERNET (Universidad de Sonora).
BUSCADORES DE INTERNET (Universidad de Sonora).BUSCADORES DE INTERNET (Universidad de Sonora).
BUSCADORES DE INTERNET (Universidad de Sonora).jcaballerosamayoa
 
NIVEL DE MADUREZ TECNOLÓGICA (TRL).pptx
NIVEL DE  MADUREZ TECNOLÓGICA (TRL).pptxNIVEL DE  MADUREZ TECNOLÓGICA (TRL).pptx
NIVEL DE MADUREZ TECNOLÓGICA (TRL).pptxjarniel1
 
innovacion banking & warehouse 2024 blog
innovacion banking & warehouse 2024 bloginnovacion banking & warehouse 2024 blog
innovacion banking & warehouse 2024 blogManuel Diaz
 
Navegadores de internet - Nuevas Tecnologías de la Información y la Comunicación
Navegadores de internet - Nuevas Tecnologías de la Información y la ComunicaciónNavegadores de internet - Nuevas Tecnologías de la Información y la Comunicación
Navegadores de internet - Nuevas Tecnologías de la Información y la ComunicaciónAntonia Yamilet Perez Palomares
 
De Olmos Santiago_Dolores _ M1S3AI6.pptx
De Olmos Santiago_Dolores _ M1S3AI6.pptxDe Olmos Santiago_Dolores _ M1S3AI6.pptx
De Olmos Santiago_Dolores _ M1S3AI6.pptxdoloresolmosantiago
 
JORNADA INTELIGENCIA ARTIFICIAL Y REALIDAD VIRTUAL
JORNADA INTELIGENCIA ARTIFICIAL Y REALIDAD VIRTUALJORNADA INTELIGENCIA ARTIFICIAL Y REALIDAD VIRTUAL
JORNADA INTELIGENCIA ARTIFICIAL Y REALIDAD VIRTUALGuadalinfoHuscarGuad
 
Desarrollo del Dominio del Internet - Estrada
Desarrollo del Dominio del Internet - EstradaDesarrollo del Dominio del Internet - Estrada
Desarrollo del Dominio del Internet - EstradaRicardoEstrada90
 
Actividad 6/Las TIC en la Vida Cotidiana.
Actividad 6/Las TIC en la Vida Cotidiana.Actividad 6/Las TIC en la Vida Cotidiana.
Actividad 6/Las TIC en la Vida Cotidiana.241534381
 
VelderrainPerez_Paola_M1C1G63-097.pptx. LAS TiC
VelderrainPerez_Paola_M1C1G63-097.pptx. LAS TiCVelderrainPerez_Paola_M1C1G63-097.pptx. LAS TiC
VelderrainPerez_Paola_M1C1G63-097.pptx. LAS TiC6dwwcgtpfx
 
el uso de las TIC en la vida cotidiana.pptx
el uso de las TIC en la vida cotidiana.pptxel uso de las TIC en la vida cotidiana.pptx
el uso de las TIC en la vida cotidiana.pptx221112876
 
Tipos de datos en Microsoft Access de Base de Datos
Tipos de datos en Microsoft Access de Base de DatosTipos de datos en Microsoft Access de Base de Datos
Tipos de datos en Microsoft Access de Base de DatosYOMIRAVILLARREAL1
 
Uso de las TIC en la vida cotidiana .
Uso de las TIC en la vida cotidiana       .Uso de las TIC en la vida cotidiana       .
Uso de las TIC en la vida cotidiana .itzyrivera61103
 
Inteligencia Artificial para usuarios nivel inicial
Inteligencia Artificial para usuarios nivel inicialInteligencia Artificial para usuarios nivel inicial
Inteligencia Artificial para usuarios nivel inicialEducática
 

Último (20)

Chat GPT para la educación Latinoamerica
Chat GPT para la educación LatinoamericaChat GPT para la educación Latinoamerica
Chat GPT para la educación Latinoamerica
 
Electricidad Libro compendio de temas estudiados.docx
Electricidad Libro compendio de temas estudiados.docxElectricidad Libro compendio de temas estudiados.docx
Electricidad Libro compendio de temas estudiados.docx
 
Imágenes digitales: Calidad de la información
Imágenes digitales: Calidad de la informaciónImágenes digitales: Calidad de la información
Imágenes digitales: Calidad de la información
 
PRÁCTICA Nº 4: “Análisis de secuencias del ADN con el software BioEdit y uso ...
PRÁCTICA Nº 4: “Análisis de secuencias del ADN con el software BioEdit y uso ...PRÁCTICA Nº 4: “Análisis de secuencias del ADN con el software BioEdit y uso ...
PRÁCTICA Nº 4: “Análisis de secuencias del ADN con el software BioEdit y uso ...
 
editorial de informática de los sueños.docx
editorial de informática de los sueños.docxeditorial de informática de los sueños.docx
editorial de informática de los sueños.docx
 
Ejercicio 1 periodo 2 de Tecnología 2024
Ejercicio 1 periodo 2 de Tecnología 2024Ejercicio 1 periodo 2 de Tecnología 2024
Ejercicio 1 periodo 2 de Tecnología 2024
 
Tipos de Datos de Microsoft Access-JOEL GARCIA.pptx
Tipos de Datos de Microsoft Access-JOEL GARCIA.pptxTipos de Datos de Microsoft Access-JOEL GARCIA.pptx
Tipos de Datos de Microsoft Access-JOEL GARCIA.pptx
 
BUSCADORES DE INTERNET (Universidad de Sonora).
BUSCADORES DE INTERNET (Universidad de Sonora).BUSCADORES DE INTERNET (Universidad de Sonora).
BUSCADORES DE INTERNET (Universidad de Sonora).
 
NIVEL DE MADUREZ TECNOLÓGICA (TRL).pptx
NIVEL DE  MADUREZ TECNOLÓGICA (TRL).pptxNIVEL DE  MADUREZ TECNOLÓGICA (TRL).pptx
NIVEL DE MADUREZ TECNOLÓGICA (TRL).pptx
 
innovacion banking & warehouse 2024 blog
innovacion banking & warehouse 2024 bloginnovacion banking & warehouse 2024 blog
innovacion banking & warehouse 2024 blog
 
Navegadores de internet - Nuevas Tecnologías de la Información y la Comunicación
Navegadores de internet - Nuevas Tecnologías de la Información y la ComunicaciónNavegadores de internet - Nuevas Tecnologías de la Información y la Comunicación
Navegadores de internet - Nuevas Tecnologías de la Información y la Comunicación
 
De Olmos Santiago_Dolores _ M1S3AI6.pptx
De Olmos Santiago_Dolores _ M1S3AI6.pptxDe Olmos Santiago_Dolores _ M1S3AI6.pptx
De Olmos Santiago_Dolores _ M1S3AI6.pptx
 
JORNADA INTELIGENCIA ARTIFICIAL Y REALIDAD VIRTUAL
JORNADA INTELIGENCIA ARTIFICIAL Y REALIDAD VIRTUALJORNADA INTELIGENCIA ARTIFICIAL Y REALIDAD VIRTUAL
JORNADA INTELIGENCIA ARTIFICIAL Y REALIDAD VIRTUAL
 
Desarrollo del Dominio del Internet - Estrada
Desarrollo del Dominio del Internet - EstradaDesarrollo del Dominio del Internet - Estrada
Desarrollo del Dominio del Internet - Estrada
 
Actividad 6/Las TIC en la Vida Cotidiana.
Actividad 6/Las TIC en la Vida Cotidiana.Actividad 6/Las TIC en la Vida Cotidiana.
Actividad 6/Las TIC en la Vida Cotidiana.
 
VelderrainPerez_Paola_M1C1G63-097.pptx. LAS TiC
VelderrainPerez_Paola_M1C1G63-097.pptx. LAS TiCVelderrainPerez_Paola_M1C1G63-097.pptx. LAS TiC
VelderrainPerez_Paola_M1C1G63-097.pptx. LAS TiC
 
el uso de las TIC en la vida cotidiana.pptx
el uso de las TIC en la vida cotidiana.pptxel uso de las TIC en la vida cotidiana.pptx
el uso de las TIC en la vida cotidiana.pptx
 
Tipos de datos en Microsoft Access de Base de Datos
Tipos de datos en Microsoft Access de Base de DatosTipos de datos en Microsoft Access de Base de Datos
Tipos de datos en Microsoft Access de Base de Datos
 
Uso de las TIC en la vida cotidiana .
Uso de las TIC en la vida cotidiana       .Uso de las TIC en la vida cotidiana       .
Uso de las TIC en la vida cotidiana .
 
Inteligencia Artificial para usuarios nivel inicial
Inteligencia Artificial para usuarios nivel inicialInteligencia Artificial para usuarios nivel inicial
Inteligencia Artificial para usuarios nivel inicial
 

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