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