Introducción a Symfony 2
Hoy iniciamos con el primer capítulo del curso Symfony 2, el framework PHP orientado a objetos. El contenido está dividido en 13 capítulos que se estarán publicando semanalmente:
- Introducción a Symfony 2
- El proyecto y los Bundles
- Creando páginas con Symfony 2
- Sistema de Routing
- Definición de rutas con comodines
- Trabajando con el controlador en Symfony 2
- Manejando las vista con Twig en Symfony2
- Configurando nuestra base de datos
- Manipulando datos con Doctrine
- Validación de datos y creación de formularios
- Integrando AJAX
- Integrando jQuery
- Instalando Bundles de Terceros
- Seguridad
Al finalizar la guía podrás descargar en diferentes formatos el contenido completo. ¡Ahora, comencemos con el primer capítulo!
Capitulo 1: Introducción a Symfony 2
Symfony es un framework PHP que nos permite muy fácilmente utilizar la arquitectura MVC (Model-View-Controller). Fue escrito desde un origen para ser utilizado sobre la versión 5 de PHP ya que hace ampliamente uso de la orientación a objetos que caracteriza a esta versión y desde la versión 2 de Symfony se necesita mínimamente PHP 5.3.3.
[tipexperto titulo = “Nota”]Esta guía está actualizada para utilizar la versión 2.2 de Symfony ya que desde esta versión se crearon muchas mejoras.[/tipexperto]
Symfony Fue creado por una gran comunidad liderada por Fabien Potencier, quién a la fecha, sigue al frente de este proyecto con una visión muy 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 agilizar 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 exitosos de terceros y los integra como librerías para ser utilizados por nosotros. Entre ellos encontramos que integra plenamente uno de los frameworks ORM más importantes dentro de los existentes para PHP llamado Doctrine, el cual es el encargado de la comunicación con la base de datos, permitiendo 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 setencias SQL no son generadas por el programador sino por el mismo Doctrine.
Otro ejemplo de esto es la inclusión del framework Twig, un poderoso motor de plantillas que nos permite 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 totalmente 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.
Contamos con las instrucciones de consola denominadas tasks (tareas), que nos 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 formulario con HTML sino que lo programamos utilizando 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 que pueden ser realizados por un mal uso de nuestra lógica de negocio.
Logramos una aplicación (sitio Web) donde todo tiene su lugar y donde el mantenimiento y la correcció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 problemas 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!!!
Estos son solo algunos de los conceptos que Symfony nos provee sin ni siquiera entrar en otros que son muy importantes como por ejemplo integración con phpunit para realizar facilmente pruebas unitarias y funcionales, soporte para injección de dependencias, fácil utilización de assetics para administrar y optimizar nuestras imagenes, CSS y código JavaScript, etc.
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.
[tipexperto titulo = “Nota”]Si ya has trabajado con versiones anteriores de Symfony o ya entiendes el concepto de Arquitectura MVC, Frameworks ORM y Motores de Plantillas puedes ir directamente a la sección “Documentación oficial” de este capítulo para conocer más sobre la documentación de Symfony y comenzar a descargar el Framework.[/tipexperto]
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:
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 Mapeo entre Objetos y Relaciones. Este framework es el encargado de tratar con nuestra base de datos desde la conexión, generación de SQL, manipulación de datos, transacciones y desconexión.
Cuando hablamos de motores de base de datos se dice que cada tabla es una relación, de ahí el nombre de base de datos relacionales, lo que implica que las tablas se encuentran relacionadas entre sí.
Cuando hablamos de una aplicación orientada a objetos decimos que tratamos con objetos y no con tablas. Cuando agregamos un registro a la tabla de personas por ejemplo, en realidad decimos que agregamos un nuevo objeto Persona. Cuando decimos que un país esta relacionado a varias personas, estamos diciendo que un objeto País contiene un colección de objetos Persona.
Para esto, lo que hacemos es crear clases que mapean cada relación de la base de datos y en lugar de hablar directamente con la base de datos, nosotros los programadores, hablamos con los objetos y Doctrine se encargará de traducir lo necesario para hablar con la base de datos.
Con esto logramos una abstracción casi del 100% con relación al motor de base de datos, sin importar cual sea, ya que hoy en día la mayoría de ellos se encuentran soportados por Doctrine.
Symfony toma el framework Doctrine y lo incorpora dentro de sí mismo, proporcionándonos todo el soporte necesario para utilizarlo sin preocuparnos por la configuración del mismo. Hablaremos más detenidamente sobre Doctrine y su forma de uso a partir del capítulo 8.
Utilizando un Motor de Plantillas
Nos hemos acostumbrado a escribir código PHP en el mismo archivo donde se encuentra la estructura HTML de la página. La idea de un motor de plantillas es justamente separar esto en dos capas. La primera sería el programa con la lógica de negocio para resolver el problema especifico de esa página, mientras que la otra sería una página que no contenga el mencionado código sino solo lo necesario para mostrar los datos a los usuarios.
Una vez que hemos solucionado la lógica necesaria, ya sea ejecutando condiciones, bucles, consultas a bases de datos o archivos, etc. tendríamos que guardar los datos que finalmente queremos mostrar en variables y dejar que el motor de plantillas se encargue de obtener la plantilla con el HTML necesario y mostrar el contenido de las variables en sus respectivos lugares.
Esto nos permite, en un grupo de desarrollo dejar la responsabilidad de la capa de diseño al diseñador y la programación de la lógica al programador.
Existen varios motores de plantillas dentro del mundo de PHP hoy en día. Ya hace un buen tiempo, Fabien Potencier, líder del proyecto Symfony, realizó pruebas con relación a los motores de plantillas existentes en el mercado y el resultado lo publicó en su blog bajo el título Templating Engines in PHP. Se puede ver ahí que tras muchas pruebas y análisis el framework de plantillas Twig es adoptado dentro de la nueva versión de Symfony. Hablaremos más sobre la forma de uso de Twig en el capítulo 7.
Documentación oficial
Symfony cuenta hoy en día con dos ramas estables. La versión 1.4 es la última de la primera generación y el 28 de julio de 2011 se ha lanzado oficialmente la versión 2 creando una nueva rama. Hay bastante diferencia entre la rama 1.4 y la 2, por lo que este manual está basado en la nueva versión como una introducción a la misma.
Es bueno tener en cuenta que gran parte de la potencia de Symfony, siempre ha sido la excelente documentación publicada, ya que esto forma parte del éxito del aprendizaje.
En el sitio oficial encontramos 4 excelentes libros sobre Symfony que van mejorando día a día por el equipo mismo de desarrolladores y documentadores.
- Quick Tour: Guía de introducción a la versión 2 de Symfony.
- The Book: Libro oficial completo con todas las funcionalidades.
- The Cookbook: Una recopilación de varios artículos específicos sobre ciertos puntos interesantes. Muy útil después de haber leído los dos primeros libros.
- Glossary: Una glosario de palabras que podrían ser sumamente útil entenderlas bien durante la lectura de los demás.
Si quieres dar un vistazo a los libros, los recomiendo en el orden en que los explico arriba. También existe una amplia documentación sobre Doctrine y Twig en sus sitios oficiales. Al igual que Symfony ambos son dependientes de la compañía SensioLabs.
También podemos acceder al blog de noticias más concurrido por la comunidad de Symfony en español www.symfony.es donde no solo estaremos al tanto de las últimas noticias del framework sino que también fue publicado un libro por @javiereguiluz, creador del blog llamado “Desarrollo Web ágil con Symfony”.
Gestionando dependencias con Composer
Desde la versión 2.1 de Symfony se integra ampliamente al proyecto un “Manejador de Dependencias” para PHP llamado Composer. Composer contiene una base de datos online de muchas librerías desarrolladas por terceros a fin de centralizarlas en un repositorio llamado Packagist. Esto nos permite olvidarnos de descargar las librerías que queremos utilizar y almacenarlas dentro de nuestro proyecto base sino que a través de un archivo de configuración declaramos cuales son las librerías que nuestro proyecto necesita para funcionar y estas se descargaran y serán administradas por Composer. Symfony por supuesto también se encuentra en el repositorio central de Composer y lo puedes ver aquí.
Para instalar composer es sumamente sencillo y en el sitio web oficial puedes ver como se instala para Windows tanto como para Unix.
Para comprobar que composer esté funcionando bien puedes escribir en la consola la siguiente línea y si te devuelve el hash de la versión entonces está todo correcto.
C:\wamp\www> composer --version Composer version e43d0b5a5b8dec50464c907bf837e673f50e1de2
Descargando la versión 2.2 de Symfony
[tipexperto titulo = “Nota”]
Para este manual se usará la última versión disponible de wampserver utilizando Windows como Sistema Operativo, habiéndolo instalado en C:\wamp\. La última versión de Symfony a la hora de escribir este capítulo se encuentra en 2.2.0.
[/tipexperto]
Una vez instalado Composer la instalación de Symfony es extremadamente sencilla. Lo único que tienes que hacer es situarte en la carpeta donde quieres descargarlo que en este caso seria C:\wamp\www\ y ejecutar el comando “composer create-project symfony/framework-standard-edition path/ 2.2.0”. Abajo antes de mostrar el ejemplo explicaremos que significa este comando:
- composer: Este es el comando en sí que utilizaremos para ejecutar las funcionalidades de composer
- create-project: Esta funcionalidad le dice a composer que cree un nuevo proyecto el siguiente tipo
- symfony/framework-standard-edition: Con esto le especificamos a composer que queremos instalar la version standar edition de Symfony que se encuentra aquí en el packagist.
- path/: Le decimos la ruta en donde tiene que instalarnos el proyecto
- 2.2.0: Especificamos que la versión de Symfony que queremos es la 2.2.0
Ahora que entendemos que significa abramos una terminal, ingresemos a nuestra carpeta raíz donde nos descargaremos el framework Symfony y dejémosle a composer encargarse del resto.
C:\wamp\www> composer create-project symfony/framework-standard-edition Symfony/ 2.2.0
Una vez ejecutado el comando podremos ver como composer comienza a descargar todas las librerías que componen el framework. Una vez finalizado podremos abrir el navegador de archivos y veremos los siguientes archivos y carpetas:
Para saber si nuestro servidor cuenta con todo lo necesario para soportar el framework podemos ejecutar el archivo check.php que se encuentra en la carpeta app/ del proyecto descargado de la siguiente manera:
C:\wamp\www> cd Symfony C:\wamp\www\Symfony> php app\check.php
Esta pantalla nos mostrará los requerimientos obligatorios (Mandatory requirements) y requerimientos opcionales (Optional recommendations) para usar Symfony en nuestro server.
Si vemos en nuestra consola que los requerimientos obligatorios tienen a la izquierda la palabra “OK” significa que está bien pero si vemos la palabra “ERROR” ese o esos requerimientos deberán ser solucionados.
Por ejemplo podemos ver los siguientes
- El primero chequea que la versión mínima de PHP sea la 5.3.3 si tienes una versión menor entonces tendrías que actualizarte.
- Hay otros dos que requieren que des permisos de escritura a las siguientes dos carpetas descargas: app/cache y app/logs
- Hay una que pude que en el php.ini se encuentre seteada la variable date.timezone. Si te marca error deberas ingresar al php.ini y asignarle un valor. Tienes que tener en cuenta que hay veces que deberías setear esto en dos archivos php.ini. Por ejemplo si utilizas Ubuntu o Debian deberías hacerlo para el cliente php (/etc/php5/cli/php.ini) y para el apache (/etc/php5/apache2/php.ini)
Con todos los requeremientos obligatorios solucionados podríamos ingresar a nuestro sitio: http://localhost/Symfony/web/app_dev.php y ver la pantalla de bienvenida diciéndonos que la instalación está correcta y felicitándonos por el arduo trabajo de instalación
Resumen Final
Para cerrar este capítulo sobre la introducción a Symfony hagamos un resumen sobre los temas tratados.
Hablamos un poco sobre Symfony como framework de desarrollo de aplicaciones Web, viendo algunas de las muchas ventajas y aclaramos que la versión utilizada para este manual sera la versión 2.2.0
Vimos una introducción sobre ciertos conceptos sumamente importantes para entender la forma de trabajo que tendremos en los siguientes capítulos, hablando sobre la arquitectura Model-View-Controller, la idea de usar un framework ORM para comunicación con la base de datos y las bondades de trabajar con un motor de plantillas como Twig.
Hemos hablado también que Symfony publica mucha información como documentación oficial que siempre se mantiene actualizada y por último, hemos instalado Composer, descargado el framework y lo hemos puesto dentro de nuestro localhost para ser accedido con el navegador. Con esto ya hemos realizado la instalación correspondiente.
Con esta pequeña introducción daremos un salto directo al siguiente capítulo donde hablaremos de la estructura de directorios de Symfony2 y sobre los Bundles.
[…] Ardissone para Maestros del Web.Agrega tu comentario | Enlace permanente al […]
Gracias por compartir conocimiento!
Les recomiendo también http://symfony.es donde encontrarán el mejor blog de la comunidad Symfony y un excelente libro de Javier Eguiluz.
Recuerdo haber visto unos videos en donde explicaban esto y mucho mas, si los encuentro los posteare.
También existen vídeos de las jornadas de Vigo en este canal:
http://www.youtube.com/watch?v=gywm42aJOBA
y sobretodo los desymfony.com aquí:
http://vimeo.com/decharlas/videos/page:2/sort:newest
Felicitaciones y gracias Juan.
Mucha claridad y simpleza en esta guía. Justo lo que estaba buscando.
Voy a seguirla.
Saludos.
L.
Muchas felicidades Juan, fue un placer colaborar contigo en esta guía.
Muchas gracias, esto es importante para los que estamos empezando en el desarrollo web con PHP.
Saludos y muchas gracias por la guía. No tenía idea de este framework, pero se ve que es muy interesante. Todos los conceptos muy bien explicados, excelente tutorial.
Saludos!!!
Sería muy útil que los puedas compartir, gracias Nelson
Gracias por el recordatorio Hugo. Es así mismo el gran Javier Eguiluz es un gran conocedor de Symfony y tenemos noticias siempre actualizadas en su blog.
Felicidades a ti también Maycol. Muy buen trabajo!
Excelente Gracias!!
Llevo algun tiempo aprendiendo este framework, será de mucha utilidad sin dudas!
Gracias!
Saludos!
donde y cuando…
me interesa el curso….
Wilson arriba tienes lo que va a ser el índice del curso en una guía que será publicada aquí semana tras semana hasta el capítulo 13 arriba tienes el primer capítulo ya publicado
[…] con gente de Maestros del Web para crear una guía de Symfony2 y el día de hoy se ha publicado mi primer capítulo. Esta guía la escribimos en conjunto con @maycolalvarez (maycolalvarez.com) quien también es […]
[…] Introducción a Symfony 2 […]
Excelente iniciativa Juan!!!
Muy bien explicado, completo y simple de entender. Un +1000!!
Un abrazo!
Hola, este framework es de lo más interesante, estoy muy emocionado leyendo todas las guías y manuales que he encontrado. he estado intentando hoy (15/2/2012) descargar la versión 2 de symfony, pero siempre el archivo standard vendors, me sale corrupto… sabrás si hay otro mirror para empezar a trabajar con esta versión?
Aqui teneis videos de las jornadas de desymfony y de Vigo
– Las de desymfony: http://vimeo.com/decharlas/videos/page:2/sort:newest
– Las de Vigo: http://www.youtube.com/results?search_query=symfony+vigo&oq=symfony+vigo&aq=f&aqi=&aql=&gs_sm=3&gs_upl=1196l3212l0l3333l12l8l0l0l0l0l0l0ll0l0
BoniLabs es muy raro que tengas problemas al bajarlo. Si usas linux podrías intentar con un “wget -c” por si se corta la descarga. Lo mejor es que lo puedas descargar desde el sitio oficial.
Si tienes git instalado podrías intentar descargar la versión sin los vendors y en la consola dentro de la carpeta descomprimida ejecutar el comando “bin/vendors install”. Esto lo que hace es conectarse a los repositorios y descargar los vendors.
Avísanos si lo has conseguido o si sigues con problemas.
En estos ultimos
meses estuve trabajando mucho con PHP, CSS, HTML5 y jQuery. Y estuve
leyendo el primer capitulo de Sinfony2. Me queda una pregunta. ¿Es
posible continuar con el diseño artesanal del HTML, CSS, jQuery y
utilizar las ventajas del sinfony? o ¿El sinfony te limita en
el diseño de una aplicación?
Gonzalo, es por es o que me gusta Symfony, porque es un framework que te ayuda con el PHP, haciéndolo más robusto y dándote mayor facilidades pero te da la libertad de trabajar con HTML, JavaScript y CSS como lo quieras ya que de ti dependerá la capa de presentación. Esto te permite usar HTML5 y CSS3, usando JavaScript base o jQuery, prototype, ExtJS según sea tu elección
Listo! gracias, espero con impaciencia el resto de capítulos de esta guía, se ve que será material muy valioso.
este es una pequeña aplicación que realice con symfony2 que te permite centralizar symfony2 y tener varias aplicaciones usando la misma base de symfony2 y sus actualizaciones, y no tener por cada aplicación una copia de symfony2
http://rdcklinux.wordpress.com/2011/08/16/aplicacion-base-para-symfony2/
Buen trabajo, estaré atento a las próximas publicaciones, lo único malo que veo es que al parecer usaras windows para hacer el desarrollo, que lástima que un framework tan potente sea trabajado sobre un sistema operativo con pocas posibilidades.
Un abrazo
Muy útil guía, creo que me servirá bastante durante se desarrollo. Lo veré cada miércoles.
Yo solo tengo una simple duda, una duda de un simple mortal desesperado… en Windwos 7, por Dios en qué consola pongo los comandos como: php -V, php symfony -V, etc, etc
En el CMD no creo estoy con lo de Cygwin pero creo que tardará unos 3 días de descargar sus paquetes al paso que va… alguna sugerencia?
Otra opción es clonarlo via repositorio de github https://github.com/symfony/symfony
Excelente Tuto…de verdad que llena de emoción encontrar sitios como este… Mil gracias y sigan compartiendo.
Muy buena iniciativa :aplauso:
Así mismo Miguel. Se utiliza windows porque por lo general quienes utilizamos linux ya trabajamos un poco más con apache por ejemplo. Me parece importante que las personas que no lo manejan bien puedan usar algo sencillo como wampserver o cualquier otro.
Pero no te preocupes que se utiliza solo al momento de la instalación, para el resto solo se hace referencia al proyecto
Excelente pregunta BoniLabs.
Si, efectivamente puedes usar el CMD sin problema. Cuando uso windows por lo general uso un proyecto que se llama console2 (http://sourceforge.net/projects/console). Es una consola que me gusta más que el CMD por ser más personalizable pero ambos funcionan
Para los que utilizan Drupal como CMS o esten interesados en utilizarlo, en la próxima versión de Drupal la se utilizarán algunos componentes de Symfony 2 como lo son HttpFoundation y ClassLoader
Aquí una entrada de mi blog donde hago mención de esto : http://jmolivas.com/drupal-8-symfony-2-y-wscci
Symfony 2 corre bajo PHP 5.3, sólo necesitas una implementación de PHP con todos los requisitos que Symfony exige, tanto el código de Juan como el mío funciona perfectamente bajo GNU/Linux, de hecho el mismo fw dispone de un archivo app/check.php que te permite comprobar si cumples con los requisitos, no te preocupes por ello 😉
Que buena noticia, además les recuerdo que la gente de phpBB tiene planes de utilizar Symfony2 como plataforma para phpBB 4 http://www.symfony.es/2010/02/23/primera-imagen-de-phpbb4-sobre-symfony-2/
Gracias Juan por compartir el tutorial.
Saludos
Muchisimas Gracias de verdad POr Compartir tus Conocimientos Qdaremos A espera de los demas Capitulos
Gracias por la nueva guia.
sigamos aprendiendo
me sale el siguiente error: Unexpected character in input: ‘\’ (ASCII=92) state=0 in C:\AppServ\www\Symfony\web\app_dev.php on line 20
La linea es : use Symfony\Component\HttpFoundation\Request;
su ayuda porfavor
[…] Guía de Symfony en Maestros Del Web: escrita por Juan Ardissone, en español y gratuita. Por el momento sólo se ha publicado una entrega, pero da buena muestra de la gran calidad de la guía. […]
Hay una muy buena colección de vídeos de como realizar un proyecto con symfony 2, cada vídeo dura aproximadamente una hora, dignos de un maratón. les dejo el link:
http://www.symfony.es/2011/07/06/desymfony-2011-todos-los-videos-y-presentaciones/
Saludos.
Hola Oscar.
Te has fijado que la versión mínima del PHP que usas sea el 5.3?
Gracias por el aporte Eduardo. Así mismo, en el primer video correspondiente a Javier Eguiluz podrán tener una ampliación a este primer capítulo
Gracias Juan Ardissone… probaré lo que me estás comentando. También te cuento que he estado experimentando con Ubuntu, hasta ahora muy ágil pero no tengo mucha experiencia. La otra opción que estoy explorando es el Plugin para Symfony2 que tienen NetBeans IDE 7.1
Muchas gracias y me quedo ansioso esperando la segunda parte de esta guía.
Excelente emprendimiento Juan. Te deseo el mayor de los éxitos.
Es increíble encontrar sitios webs como este, en donde la gente comparte sus conocimientos…
Dar las gracias muchas veces se queda corto… y no hay mejor respuesta a este tipo de acciones que corresponder con “apoderarse” de esos conocimientos =)
Muchas gracias por este manual… y desde ya… fiel seguidor a este emprendedor de el diseño web y creación de sitios =)
Muy interesante. Hay alguna versión para MAC OS Leopard 10.0.X
Buen tutorial, muy bien redactado, en hora buena, muchas felicidades, sabes que yo quise dar el salto a el uso de frameworks hace ya unos 8 meses atrás y estuve evaluando con cual tirarme al agua, al final me decidí por Yii ya que symfony me pareció que tenia una curva de aprendizaje muy alta en el inicio, sin embargo al leer este tutorial he encontrado fuerzas renovadas para aprender otro framework MVC. En mi experiencia algo que a mi me ha ayudado de sobremanera es el foro de Yii en este caso, ¿como está la comunidad en este ámbito?
Jose Symfony es puro PHP, lo que tendrás que instalar es un servidor web en tu MAC, para este manual PHP 5.3+, Apache y MySQL. El WAMP es simplemente eso (Windows Apache MySQL PHP).
Interesante tu pregunta Lester. Symfony tiene una comunidad muy activa en grupos de google, en especial el grupo llamado symfony-es siempre me fue de gran ayuda, tienes varios más también a parte de este (groups.google.com)
[…] el capítulo anterior hemos descargado el framework Symfony y lo hemos descomprimido en la carpeta correspondiente a […]
Nelson, pudiste conseguir esos videos? 😛
No hay duda de que Symfony 1.x es uno de los frameworks con mayor curva de aprendizaje, por suerte Symfony 2 ha reducido drásticamente esa curva a simplificar muchas librerías en paquetes más semánticos, si dominas el concepto de MVC te será mucho más fácil asimilar el conocimiento.
De hecho Symfony 2 no sólo es un “Full Stack Framework”, sino un framework ampliamente modular, donde puedes añadir/agregar Bundles que te harán el desarrollo más ameno, incluso existe el Micro-Framework Silex que es realmente compacto y sólo necesita un archivo.
[…] Introducción a Symfony 2 Be trained by Symfony experts – 2012-02-27 Köln – 2012-03-05 Köln – 2012-03-05 Montreal […]
[…] quieres ver el primer artículo lo podrás hacer aquí. *{margin:0; padding:0;} #socialbuttonnav li{background:none;overflow:hidden;width:65px; […]
me sale esto:
Warning: Unexpected character in input: ‘\’ (ASCII=92) state=1 in C:\AppServ\www\Symfony\web\config.php on line 80.
la linea 80: $reflector = new \ReflectionExtension(‘intl’);
que hago?
Gracias por la respuesta!!
Hola..muy bueno el tutorial pero tengo problemas al momento de descomprimir el archivo, una vez que me descargo del sitio oficial no se si alguien me pueda ayudar, o desde q otra pagina lo puedo descargar..
Gracias
Sería bueno explicar eso: “un sistema con pocas posibilidades” en un término mas técnico sin fanatismo.
Buen trabajo y muy interesante el tema de Symfony … Son tantas cosas que nos dan en MaestrosDelWeb que no damos abastos (yo por lo menos) 😉
Juan, gracias por tu tiempo.
Te has fijado que la versión mínima del PHP que usas sea el 5.3?
Fatima, más arriba se publicó la dirección por si quieras clonar el proyecto desde Github ahí puedes ver los datos
Para ser sincero, yo no tengo muchos conocimientos sobre estos temas. He estado viendo que ustedes disponen de muchos cursos y guías de acceso gratuito (bueno, valen un tweet).
Y la verdad es que me gustaría aprender de aquellas. Quizás usted pueda recomendarme específicamente por cuál de estos lenguajes de programación empezar. Quizás entre ellos guarden alguna relación o alguno requiere de conocimientos básicos de otro. Quisiera empezar por el más esencial, y es que para ello requiero de su recomendación. Muchas gracias.
Hola Juan.. sabes soy un poco nueva en esto.. y si revise el link para clonar el proyecto pero cuando reviso los archivos no aparecen ciertas carpetas como la carpeta web y los archivos no son los mismos como el que se explica en el tutotial.. y como q me pierdo un poco.. o no se si alguien me pueda facilitar los archivos del Symfony de la verssion que esplican en el tutorial… o como es el manejo de los archivos desde Github
Gracias !!
JuanC, en mi opinión deberías ir primeramente a la guía de HTML5 ya que para cualquier lenguaje del lado del servidor como PHP o Python tendrás que usar HTML ya que la intención es programar para la Web (si no conoces nada de HTML todavía te recomendaría primeramente investigar un poco). Luego podrías elegir investigar sobre PHP5 y finalmente leer la guía de Symfony2 porque por más de que Symfony2 es finalmente PHP5 es como una capa superior al lenguaje, que ciertamente te ayuda a programar más profesionalmente con PHP pero implica que conozcas el lenguaje primeramente o que hayas usado ya algún framework MVC.
Symfony está al nivel de framework MVC así como Django (python, tienes la guía también aquí) o Ruby on Rails. Son como librerías escritas por encima del lenguaje básico. También tienes la guía de Zend que es otro framework PHP.
Si tu idea no es programar para la Web sino para celulares entonces también tienes la guía de Android pero tendrías que conocer primeramente JAVA, el lenguaje utilizado para esto o la guía de IOS5.
Espero que mi comentario te ilumine un poco más el camino cualquier cosa a las órdenes
Un aplauso y muchos éxitos en este reto, el tutorial ha estado
mas que claro y muy agradable, gracias a ti y a maestros del web.
Excelente iniciativa!!
A ver si de una vez por todas consigo domar un framework de estos y crear una aplicación de verdad
Buen dia, quisisera saber cada cuanto tiempo colocas un capitulo?- Muy Buen tutorial, pero estoy ansiosa por continuar.
Marylliana estamos publicando un capítulo cada miércoles y son 13 capítulos en total
1-Buenas hago todo lo que me dicen exactamente usando XAMPP y WAMP con cualquiera de los dos me sale el error que dice asi:
Fatal error: Class ‘Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass’ not found in D:\xampp\htdocs\symfony\vendor\symfony\src\Symfony\Component\DependencyInjection\Compiler\PassConfig.php on line 50
2-cuando voy al http://localhost/Symfony/web/config.php de symfony me sale esto
Welcome!
Welcome to your new Symfony project.
This script will guide you through the basic configuration of your project. You can also do the same by editing the ‘app/config/parameters.ini’ file directly.
Recommendations
To enhance your Symfony experience, it’s recommended that you fix the following :
1. Install and enable a PHP accelerator like APC (highly recommended).
2. Install and enable the intl extension.
3. Set short_open_tag to off in php.ini*.
* Changes to the php.ini file must be done in “D:\xampp\php\php.ini”.
* Configure your Symfony Application online
* Bypass configuration and go to the Welcome page
* Re-check configuration
Que puedo hacer no hay forma que me salga la pantalla de bienvenida de symfony para ver si me pongo de una vez a aprender. Saludos espero su pronta respuesta…
Muchas gracias, pero no se pueden descargar los capítulos en PDF o algo para facilitar la lectura??
Gracias de antemano.
Estaré pendiente el próximo miércoles.. Muchas Gracias
VeNoMZito tengo entendido que al terminar la publicación se preparará el PDF
Yero podrías probar descargarlo nuevamente?. Puedes probar descargar la versión tgz (http://symfony.com/download?v=Symfony_Standard_Vendors_2.0.10.tgz), Encuentro en google que hay gente que tuvo este problema con el zip. Cuéntanos que tal te va
Existe la posibilidad de subirlos por capítulos?? Suelo leer en el ipad, y la verdad los pdf facilitan mucho la lectura en el ipad. Pero bueno si hay que esperar pues nada …
Hola VeNoMZito, como ya te comentaba Juan el formato en .PDF se estará publicando al final, por ahora cada capítulo se estará publicando en el sitio.
Hola saludos y mil gracias por publicar estos 2 primeros capitulos de lo que sera la guia de symfony 2.0 , soy estudiante de ciencia de la computacion de cuba y estamos haciendo nuestros trabajos de diploma con el framework y la verdad es que no ha facilitado mucho el trabajo ya que nos permite enfocarnos mas en el modelo del negocio que en la programacion en si.
Seguimos todas las publicaciones y los post de los usuarios lo que nos permitira aprender mucho de todas las personas que trabajan con el framework
mil gracias de nuevo a fabien por su idea y por su compañia SensioLabs
Hola, excelente sitio, hace dos semanas que conozco symfony2 y la verdad que es excelente. Tengo una pregunta: Trabajo con firebird en windows y al querer activar el ph_pdo_firebird.dll arroja un error, como que no encuentra la libreria .dll, copio la dll en php/ext, reinicio los servicios (trabajo con wamp) y sigue el error. La info que puede encontrar sobre este problema en la web no funciona, Alguna sugerencia?. Les deseo lo mejor, gracias
Hola Juan, te cuento que accedí a tu blog a través de linkedin.
Quería preguntarte sobre lo que decís de la creación automática de ABM’s, estuve investigado un poco pero no encontré info sobre eso.
Lo que hice fue crear el modelo de datos con MySQL Workbench, pasarlo al MySQL y luego importarlo desde Symfony. O sea, ejecute un comando que me generó la descripción de las tablas en yaml y luego los popo’s. Me pareció que en Symfony 1.x había visto que esto se generaba automáticamente, pero sólo llegué a terminar jobeet hace mucho tiempo. Cómo vi tan cambiada a la versión 2 no me costó creer que esto haya cambiado cuando vi que en los ejemplos se creaban los controladores a mano y allí sé hacía la persistencia de objetos. Tenés algún tip para darme? Algún comando que ejecutar? Uso Ubuntu con las últimas versiones de PHP, MySQL, Apache y NetBeans con los plugins de Symfony y Twig, y estoy muy cómodo desarrollando en éste entorno. Saludos!
No te preocupes Jose puedes instalar MAMP. Es lo mismo que WAMP pero para MACl. Yo lo estoy usando y de momento todo ok.
Para cualquier consulta sobre instalación o configuración del servidor local (MAMP) estamos para ayudarnos…
Aprovecho para felicitar y Juan por tan gran aporte +1
Nos puedes contar cuando sale el próximo capitulo del curso?
Gracias, estoy pendiente de nuevas actualizaciones.
Juan me sucede los mismo que antes el mismo mensaje de error
Fatal error: Class ‘Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass’ not found in D:\xampp\htdocs\symfony2\vendor\symfony\src\Symfony\Component\DependencyInjection\Compiler\PassConfig.php on line 50
Aun no se que hacer he buscado mil soluciones y hasta he pueso los VirtulHost como dicen en muchos sitios y nada tampoco. Ya no se que hacer. Puse incluso el Path este:
D:\xampp\htdocs\symfony2;D:\xampp\php
y nada de nada. Aqui te dejo lo que hice con el VirtalHost agregue al final del httpd del apache archivo de configuaracion esto:
NameVirtualHost 127.0.0.1
ServerName symfony
DocumentRoot “D:/xampp/htdocs/symfony/web”
DirectoryIndex app.php
AllowOverride All
Allow from All
y cuando hago esto no me da el error de antes pero la pagina carga en blanco completamente.
Entonces adiciones en la ruta de los hosts en C:\Windows\System32\drivers\etc archivo hosts agregue la linea:
127.0.0.1 symfony2
esto lo lei en otros sitios y tampoco ha funsionado. La verdad ya no se donde es el problema a nos ser que haya que saldar algun problemema de las recomendaciones que dice en el config.php aunque son solo recomendaciones y no creo que influya en eso. Que me recomienda???
Así como dices hay muchos cambios desde la versión 1.x a la versión 2.x. Se escribe un poco más pero se logra mucha robustez y mayor performance. Tienes el comando app/console generate:doctrine:crud que te permite hacerlo.
Mauricio los capítulos salen cada miércoles. Este miércoles 29 sale el capítulo 3 que habla sobre crear páginas
HURRAAAAAAAAAAAAAAAAAA jajajaja
Problema resuelto Juan me baje la ultima entrega de symfony2 la 10.0.11 y buela!!! funsiono… Ahora a ver los videos y empezar a aprender. Gracias de todas formas…
Es raro Yero. Encontré este hilo que habla de que las extensiones están incompletas: http://forum.symfony-project.org/viewtopic.php?t=33423
Buscaste la clase que te dice que no está? vendor/symfony/src/Symfony/Component/DependencyInjection/Compiler/ResolveDefinitionTemplatesPass.php?
Puedes probar descargando la última versión que salió: 2.0.11
hola magnífico curso, tengo una pregunta si ya tengo una aplicación realizada en symfony 1.4 hay alguna forma de migrarla a la version 2 o tengo que empesar de cero?
Adrian, la versión 2 es completamente distinta a la rama 1.x. Symfony siempre trajo instrucciones para pasar desde la versión 1.0 a la 1.3 y 1.4 por varios años pero la versión 2 se replanteó complemente diferente desde el principio.
Haces que se vea fácil, felicitaciones, voy atrasado pero intento ponerme al día.
como arreglo esto que es la parte de recomendaciones o como logro completar todas estas instalaciones o en donde lo descargo y como lo instalo…porfa
To enhance your Symfony experience, it’s recommended that you fix the following :
1.- Install and enable a PHP accelerator like APC (highly recommended).
2.- Install and enable the intl extension.
para terminar de instalar el symfony (ss.oo win — uso de wampserver)
Jose Luis, este es un tema que sale un poco de Symfony en realidad. Esta más bien orientado a la configuración de un servidor Web.
Encontré en google estos dos enlaces que creo te servirán:
Para Windows
http://elementdesignllc.com/2009/08/php-apc-for-windows-download/
Para Ubuntu:
http://www.joelverhagen.com/blog/2011/05/how-to-configure-symfony-2-0-on-ubuntu-server-2011-4/
Aqui el enlace del Libro – “Desarrollo web ágil con Symfony2” de Javier Eguiluz @javiereguiluz
http://www.symfony.es/2011/12/27/ya-disponible-el-primer-libro-sobre-symfony2/
Otros blogs de desarrolladores symfony
http://nacho-martin.com/
http://javiereguiluz.com/
En esta entrada de mi blog menciono varios enlaces de interes relacionados a Symfony 2
http://jmolivas.com/drupal-8-symfony-2-y-wscci
Me parece excelente, y he desarrollado muy bien lo sobre mi Mac, pero en mi trabajo tenemos fedrora 16 y no se como instalarlo ya que +a no lo reconoce comando. Me gustaria saber cual es el equivalente para poder continuar con el tutorial, De antemano gracias 😉
Buen dia!
Excelente Curso…! Muchas gracias!
Me surgieron las siguientes dudas, al acceder a config.php me tira solo 2 recomendaciones.
1 – Install and enable the intl extension.
2 – Set short_open_tag to off in php.ini*.
En mi hosting, como en la mayoría no tengo acceso a modificar los parámetros internos del mismo, de igual modo si me dejan elegir la config… ahora esta así… – PHP 5.3.6 con APC+Zend –
Por lo tanto estoy muy cercano a la perfección, y quisiera aplicar las recomendaciones.
Para la 1era, tengo entendido que con la versión 5.3 en adelante de PHP viene ya por defecto la extensión intl, entonces porque me tira esta recomendación? y si debería habilitarla como lo hago?, esto me lo tira en local con xampp como en el hosting
Por otra parte con la 2da recomendación, intento desde .htaccess modificar este parámetro ya que no tengo acceso a php.ini, pero no lo aplica y me tira error.
Probé con la siguiente instruccion – php_flag short_open_tag off – y en local usando xampp como server me anda perfecto, pero en mi hosting me tira error, que puede estar sucediendo? hay otro modo de hacerlo?
Desde ya muchas gracias!
Slds!
No hay comando equivalente, siempre será app/console ya que dentro de la carpeta app existe un archivo “console” que es el que se ejecuta. Fijate si tienes el php5-cli instalado y si se encuentra la ruta en el path del sistema
Podrías verificar con tu hosting si tienes forma de cambiar los parámetros. Hay veces que puedes hacerlo.
Arriba mencione dos links donde puedes investigar
[…] Con esto ya podríamos ingresar a nuestro sitio: http://localhost/Symfony/web/app_dev.php y ver la pantalla de bienvenida diciéndonos que la instalación está correcta. Articulo de: Maestros del Web […]
Excelente pagina mi pana, espero que sigan creciendo y no se quede en solo estos excelente primeros 4 capítulos, ya que estoy esperando el siguiente capitulo..
Saludos
Muchas gracias por este manual, muy detallado y didáctico..
sigan así..
Tranquilo que el contenido ya ha sido programado y se publicará semanalmente, cada miércoles hasta su culminación, esta guía es fruto del esfuerzo en conjunto de muchas personas, no sólo incluyendo a Juan y mi persona 😉
muchicimas gracias por este tutorial, lastima q solo sea un capitulo por semana, espero con ansias terminarlo
Más vale lento, pero seguro XD, al final se publicará en PDF, no te desanimes, el contenido del Manual es excelente para aprender el Framework, completamente gratuito y en español, saludos 😉
[…] habíamos hablado en el capítulo 1, Twig permite separar el código PHP del HTML por lo que por ejemplo en lugar de […]
[…] el capítulo anterior hemos descargado el framework Symfony y lo hemos descomprimido en la carpeta correspondiente a […]
hola, yo tambien tengo el mismo problema, le puse php 5 y nada. Qué otra cosa podría ser?
Fernando, comprobaste que le hayas puesto mínimamente la versión 5.3?
Muchas gracias por el aporte, quisiera saber como se podria integrar SYMFONY2 con librerias js de EXTJS
Hola , muchas gracias por la Guia, esta muy completa, la estoy siguiendo.. estoy intentando seguir los pasos utilizando ajustandolos a Fedora 16(así nos toca), pero en el lugar donde aparecen los problemas(cuando se acaba de instalar symfony y lo voy a probar) dice:
3 MAJOR PROBLEMS
Major problems have been detected and must be fixed before continuing :
Change the permissions of the “app/cache/” directory so that the web server can write into it.
Change the permissions of the “app/logs/” directory so that the web server can write into it.
Set the “date.timezone” setting in php.ini* (like Europe/Paris).
y con los permisos todo anda bien, alguien sabe algo al respecto.
Diferencia con la guia:
No estoy utlizando wampserver instale y configure todo por aparte php mysql apache phpmyadmin y los integre a mano, y todo anda bien.
la ruta donde tengo que descargar a symfony 2 es: /var/www/html/[aquí], y todo anda bien :).
pero es en esa pantalla inicial de symfony 2 en donde me salen estos problemas que supuestamente existen.
dicen que esta vaina symfony 2 , es buena pero si es multiplataforma si lo creo. saludos…
[Solucionado lo anterior] Solo era SElinux con sus politicas… por si a alguien mas le pasa, puede desactivar SElinux y volver asignar los permisos… u hacer una excepción (largo y tedioso, yo desactive SElinux)… zorry…estos problemas no eran culpa de symfony.. P
Excelente hermano. Llevo un tiempo trabajando con Symfony 1.2, ahora con este material el cambio va a ser mas fácil. Gracias.
Sergio solo debes importar los archivos de ExtJs dentro de tu vista por ejemplo en el archivo Symfony\app\Resources\views\base.html.twig si estás heredando de esa plantilla. Una vez que importar los css y los js simplemente programas en JavaScript
Hola.
Lo primero muchas gracias por el trabajo que realizaste, gracias a gente como tu podemos ir aprendiendo.
Queria preguntarte porque llevo algun dia atascado, yo estoy utilizando un servidor appserv sobre windos vista he seguido tus pasos y cuando entro en la url no veo nada, ni la pagina de configuracion, no veo absolutamente nada se me queda el explorador en blanco y no veo que de ningun error por ningun lado, pero tengo algo mal fijo.
El servidor esta configurado bien o eso creo porque he desarrollado cosas y no he tenido problema pero con symfony2 no lo estoy consiguiendo.
Puedes o alguien puede ayudarme?
Un saludo y gracias
[…] http://www.maestrosdelweb.com/editorial/curso-symfony2-introduccion-instalacion/ […]
LLevo 4 dias desde que decidi aprender symfony2 , 2 de ellos algo frustrantes, pero mi tercer dia fue excelente gracias a este tutorial, ya estoy armando mi proyecto, excelente tutorial, gracias por este aporte.Saludos
Jorge, comprobaste que le hayas puesto mínimamente la versión 5.3? La última vez que vi alguien usando appserv era se el problema
Los 2 primeros errores te indican que los directorios app/cache y app/logs no tienen permisos de escritura, el 3ro sólo te indica que debes de establecer el timezone en el php.ini, Symfony2 es un Framework para PHP, y es PHP el multiplataforma, no Symfony, y en el caso de sistemas basados en Unix\Linux como Fedora debes de aplicar los permisos de escritura al usuario www-data (o el que se defina en fedora), si existe inconsistencia entre el usuario www-data y el manejo de la consola (en mi caso con Ubuntu), aplica umask(0000); al principio de app/console y del controlador frontal de producción (app_dev.php)
Hola. No se si es el lugar más adecuado para preguntar esto, pero a ver si me pueden ayudar.
Hemos hecho un proyecto en symfony en localhost y estamos teniendo problemas a la hora de hacerlo funcionar en el servidor web.
La estructura de mi hosting es:
…
etc
mail
public_html
…
Entonces lo hemos subido todo el symfony a la carpeta public_html que es donde va a arrancar la pagina web. Lo que pasa es que no sabemos cómo redirigir para que arranque desde el directorio web, que es donde está el index.php .
Hemos probado a sólo poner el contenido de la carpeta web en el public_html y el resto arriba (en el directorio superior) .. pero claro… cuando subes una imagen como no encuentra el directorio web fuera de public_html te lo crea… con lo cual no fuciona las imagenes.
Mi panel de control no tiene manera de decirle la carpeta con la que tiene que arrancar un determinado dominio.
¿Cómo se suele hacer ésto? Gracias.
Lara, excelente pregunta.
La forma correcta es la segunda que estás haciendo ya que si subes la carpeta completa dentro de public_html las personas podrían ingresar por la URL a las demás carpetas como por ejemplo a Symfony\app\config donde están las configuraciones en formato YML y esto presenta un problema grave de seguridad. Por este motivo tienes que subir el contenido de la carpeta web dentro de public_html (o también podría ser otra carpeta sin problema siempre y cuando en el archivo app.php corrijas los requires) y el resto de las carpeta, que no son publicas, deben ir por debajo del public_html.
Con relación a subir la imagen me suena a algún problema que pueda ser resuelto al programar. Podrías poner aquí el código que usas para subir tus imágenes?
Saludos Juan
me sale
Warning: Unexpected character in input: ‘\’ (ASCII=92) state=0 in C:\AppServ\www\Symfony\web\config.php on line 80
Fatal error: Class ‘PDO’ not found in C:\AppServ\www\Symfony\web\config.php on line 95
tengo instalado :
Apache Web Server Version 2.2.8
PHP Script Language Version 6.0.0-dev
MySQL Database Version 6.0.4-alpha
phpMyAdmin Database Manager Version 2.10.3
que lo instala el :
The AppServ Open Project – 2.6.0 for Windows
esta copiada la carpeta de Symfony en localhost
ya reinstalo todo unas cuantas veces y siggo con el problema espero que me puedas ayudar , me imagino que a otros les puede pasar algo similar.
Excelente página
Fernando el error es justamente el que te dice ahí Fatal error: Class ‘PDO’ not found. Te aseguraste de tener instalado el PDO? Symfony lo requiere. Por otro lado no se como se comportará el framework con la versión 6 que veo que tienes instalada
trato de probar el config y me sale este error
Warning: Unexpected character in input: ‘\’ (ASCII=92) state=0 in D:\AppServ\www\Symfony\web\config.php on line 80
Fatal error: Class ‘PDO’ not found in D:\AppServ\www\Symfony\web\config.php on line 95
Hola Alfredo. Que versiones de Symfony y PHP tienes? Está instada la extensión de PDO? Estás sobre windows, linux o mac?
Muy buen artículo en español. Symphony es uno de mis frameworks favoritos, al lado de CodeInginter.
Felicidades Juan.
Gracias viejo!, estoy arrancando con symfony2 y la verdad que este trabajo está muy bien logrado!
Les felicito por el trabajo, muy bien explicada la guía pero conseguí un error en el formato de descarga PDF, TODAS las ‘ están cambiadas por ` lo que para principiantes como yo representó vueltas en círculos para darme cuenta del minúsculo pero importante detalle. Si pueden corregirlo y volver a subir la guía arreglada sería estupendo.
Heey!! Eugenia yo te conozco de google+ 😀 😀 saludos
Estoy aprendiendo a usar Symfony2 😀