Actualizado el 21 de Marzo del 2018 (Publicado el 14 de Febrero del 2018)
1.387 visualizaciones desde el 14 de Febrero del 2018
5,0 MB
141 paginas
Creado hace 13a (19/06/2012)
Sobre la guía
guía SYMFoNY 2
Versión 1 / septiembre 2011
Nivel: Básico / Intermedio
La Guía Symfony se encuentra en línea en:
http://www.maestrosdelweb.com/editorial/guia-symfony
Un proyecto de Maestros del Web
➲ Autores: Maycol Alvarez y Juan Ardissone
➲ Edición: Eugenia Tobar
➲ Diseño y diagramación: Iván E. Mendoza
Este trabajo se encuentra bajo una licencia Creative Commons
Atribución-NoComercial-CompartirIgual 3.0 Unported (CC BY-NC-SA 3.0)
CONTACTO
http://www.maestrosdelweb.com/sitio/correo/
REDES SOCIALES
Facebook: http://www.facebook.com/maestrosdelweb
Twitter: http://www.twitter.com/maestros
autoreS
Juan ardissone
@juanardissone
Maycol alvarez
@maycolalvarez
Paraguayo, analista de sistemas, desarrollador
Web y parte del plantel de profesores del Insti-
tuto de Diseño y Tecnología del país. Utiliza
(X)HTML, PHP5, JavaScript, CSS y Symfony
Framework desde su primera versión. Apasio-
nado por PHP y por popularizar su utilización
aplicando los estándares y patrones de diseño
actuales, para continuar siendo uno de los
lenguajes más utilizados dentro de la Web.
Venezolano, Desarrollador de Software bajo
PHP, HTML, Javascript, CSS; T.S.U. en Infor-
mática Egresado del I.U. “Jesús Obrero” de
Catia Caracas y Estudiante Actual de la U.N.E.
“Simón Rodríguez”, fanático del Framework
Symfony desde 1.4, jQuery, Android y de las
tecnologías abiertas GNU/Linux.
@juanardissone
www.micayael.com
@maycolalvarez
maycolalvarez.com
íNdice
íNdice
1 | Sobre la guía ......................................................................................................... 2
2 | Autores .................................................................................................................. 3
3 | Capítulo 1: Introducción ........................................................................................ 5
4 | Capítulo 2: El proyecto y los Bundles ..................................................................14
5 | Capítulo 3: Creando páginas con Symfony 2 .......................................................25
6 | Capítulo 4: Sistema de Routing ...........................................................................34
7 | Capítulo 5: Definición de rutas con comodines ................................................. 40
8 | Capítulo 6: El Controlador ...................................................................................45
9 | Capítulo 7: La Vista y Twig ...................................................................................52
10 | Capítulo 8: Configurando nuestra Base de Datos ............................................ 62
11 | Capítulo 9: Manipulando datos con Doctrine ..................................................72
12 | Capítulo 10: Validación de datos y creación de formularios ............................85
13 | Capítulo 11: Integrando AJAX .......................................................................... 99
14 | Capítulo 12: Integrando jQuery ......................................................................101
15 | Capítulo 13: Instalando Bundles de Terceros ................................................110
16 | Capítulo 14: Seguridad de acceso ................................................................. 120
17 | Más guías de Maestros del web .................................................................... 139
iNtroduccióN
caPítulo 1: iNtroduccióN
Symfony es un framework PHP basado en la arquitectura MVC (Model-View-Controller). Fue escrito
desde un origen para ser utilizado sobre la versión 5 de PHP ya que hace un uso amplio de la orien-
tación a objetos que caracteriza a esta versión y desde la versión 2 de Symfony se necesita mínima-
mente PHP 5.3. Fue creado por una gran comunidad liderada por Fabien Potencier1, quién a la fecha,
sigue al frente de este proyecto con una visión fuertemente orientada hacia las mejores prácticas que
hoy en día forman parte del estándar de desarrollo de software.
Por más que Symfony puede ser utilizado para otros tipos de desarrollos no orientados a la Web, fue
diseñado para optimizar el desarrollo de aplicaciones Web, proporcionando herramientas para agili-
zar aplicaciones complejas y guiando al desarrollador a acostumbrarse al orden y buenas prácticas
dentro del proyecto.
El concepto de Symfony es no reinventar la rueda, por lo que reutiliza conceptos y desarrollos exito-
sos de terceros y los integra como librerías para ser utilizados por nosotros. Entre ellos encontra-
mos que integra plenamente uno de los frameworks ORM más importantes dentro de los existentes
para PHP llamado Doctrine2, el cual es el encargado de la comunicación con la base de datos, permi-
tiendo un control casi total de los datos sin importar si estamos hablando de MySQL, PostgreSQL,
SQL server, Oracle, entre otros motores ya que la mayoría de las secuencias SQL no son generadas
por el programador sino por el mismo Doctrine.
Otro ejemplo de esto es la inclusión del framework Twig3, un poderoso motor de plantillas que nos
da libertad de separar el código PHP del HTML permitiendo una amplia gama de posibilidades y por
sobre todo un extraordinario orden para nuestro proyecto.
Gracias al lenguaje YAML, competidor del XML, tenemos una gran cantidad de configuración total-
mente separada del código permitiendo claridad como lo iremos viendo en los demás capítulos. Cabe
mencionar que en caso de no querer trabajar con YAML también podemos usar estos archivos de
configuración con XML o PHP.
1 http://fabien.potencier.org/about
2 http://www.doctrine-project.org/
3 http://www.twig-project.org/
1Contamos con las instrucciones de consola denominadas tasks (tareas), que permiten ejecutar
comandos en la terminal diciéndole a Symfony que nos genere lo necesario para lo que le estamos
pidiendo, como por ejemplo podría ser la generación completa de los programas necesarios para
crear ABMs, tarea que suele ser muy tediosa para los programadores ya que siempre implica mucho
código para realizar la misma idea para diferentes tablas.
Otra de las funcionalidades más interesantes, es que contiene un subframework para trabajar con
formularios. Con esto, creamos una clase orientada a objetos que representa al formulario HTML y
una vez hecho esto simplemente lo mostramos y ejecutamos. Es decir que no diseñamos el formu-
lario con HTML sino que lo programamos utilizado herramientas del framework. Esto nos permite
tener en un lugar ordenados todos los formularios de nuestra aplicación incluyendo sus validaciones
realizadas en el lado del servidor, ya que symfony implementa objetos validadores muy sencillos y
potentes para asegurar la seguridad de los datos introducidos por los usuarios.
Contamos con un amplio soporte para la seguridad del sitio, que nos permite despreocuparnos
bastante de los ataques más comunes hoy en día existentes como ser SQL Injection, XSS o CSRF.
Todos estos ataques ya tienen forma de prevenir, por lo tanto, dejémosle a Symfony preocuparse
por ellos y enfoquemos nuestra atención en los ataques podríamos realizar por un mal uso de nues-
tra lógica de negocio.
Logramos una aplicación (sitio Web) donde todo tiene su lugar y donde el mantenimiento y la correc-
ción de errores es una tarea mucho más sencilla.
Contamos con un gran número de librerías, herramientas y helpers que nos ayudan a desarrollar una
aplicación mucho más rápido que haciéndolo de la manera tradicional, ya que muchos de los proble-
mas a los que nos enfrentamos ya fueron pensados y solucionados por otras personas por lo tanto
¡¡¡dediquémonos a los nuevos problemas que puedan surgir!!!
Sobre todo esto hablaremos en los siguientes capítulos pero antes entendamos un poco más sobre
el concepto de la arquitectura MVC y otros muy interesantes.
NOTA: Si ya has trabajado con versiones anteriores de Symfony o ya entiendes el concepto de Arqui-
tectura MVC, Frameworks ORM y Motores de Plantillas puedes ir directamente a la sección “Docu-
mentación oficial” de este capítulo para conocer más sobre la documentación de Symfony y comenzar
a descargar el Framework.
6
ENTENDIENDO LA ARQUITECTURA MVC
El término MVC proviene de tres palabras que hoy en día se utilizan mucho dentro del ambiente
de desarrollo de software: Model - View - Controller, lo que sería en castellano Modelado, Vista y
Controlador. Esta arquitectura permite dividir nuestras aplicaciones en tres grandes capas:
➲ Vista: Todo lo que se refiera a la visualización de la información, el diseño, colores, estilos y la
estructura visual en sí de nuestras páginas.
➲ Modelado: Es el responsable de la conexión a la base de datos y la manipulación de los datos
mismos. Esta capa esta pensada para trabajar con los datos como así también obtenerlos, pero no
mostrarlos, ya que la capa de presentación de datos es la vista.
➲ Controlador: Su responsabilidad es procesar y mostrar los datos obtenidos por el Modelado. Es
decir, este último trabaja de intermediario entre los otros dos, encargándose también de la lógica
de negocio.
Veamos una imagen para tratar de entenderlo mejor:
Imagen tomada del manual oficial de Symfony
7
El cliente envía una señal llamada REQUEST o Petición, ésta es interceptada por el Controlador quien
realiza las validaciones necesarias, procesamiento de dichos datos y lógica de negocio asociadas a
esa petición del cliente. El Controlador envía datos al Modelado, por ejemplo para ser guardados en
una base de datos y/o los obtiene dependiendo de la solicitud del usuario para finalmente envíarlos a
la Vista a fin de ser mostrador nuevamente al cliente a través de un RESPONSE o respuesta.
Symfony es un framework totalmente basado sobre la arquitectura MVC por lo que veremos poco a
poco como se implementan estos conceptos.
QUÉ ES UN FRAMEWORK ORM
La siglas ORM provienen de Object-Relational mapping o
Comentarios de: Guía Symfony (0)
No hay comentarios