Symfony

Framework PHP orientado a objetos

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:

  1. Introducción a Symfony 2
  2. El proyecto y los Bundles
  3. Creando páginas con Symfony 2
  4. Sistema de Routing
  5. Definición de rutas con comodines
  6. Trabajando con el controlador en Symfony 2
  7. Manejando las vista con Twig en Symfony2
  8. Configurando nuestra base de datos
  9. Manipulando datos con Doctrine
  10. Validación de datos y creación de formularios
  11. Integrando AJAX
  12. Integrando jQuery 
  13. Instalando Bundles de Terceros
  14. 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.

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.

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.

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.

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:

Arquitectura MVC

Imagen tomada del manual oficial de Symfony

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

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.

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:

  1. composer: Este es el comando en sí que utilizaremos para ejecutar las funcionalidades de composer
  2. create-project: Esta funcionalidad le dice a composer que cree un nuevo proyecto el siguiente tipo
  3. 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.
  4. path/: Le decimos la ruta en donde tiene que instalarnos el proyecto
  5. 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:

Estructura del proyecto Symfony2

Estructura del proyecto Symfony2

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

Requerimientos Symfony2

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

  1. 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.
  2. Hay otros dos que requieren que des permisos de escritura a las siguientes dos carpetas descargas: app/cache y app/logs
  3. 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 :-)

Pantalla de Bienvenida de Symfony2

Pantalla de Bienvenida de Symfony2

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.

Siguiente capítulo: El proyecto y los Bundles

Juan Ardissone para Maestros del Web.
Agrega tu comentario | Enlace permanente al artículo

Síguenos en: Twitter @maestros | Facebook Fan page

128 comentarios

Comentarios

Páginas: [1] 2 »

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

    1. Juan Ardissone

      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.

  2. Recuerdo haber visto unos videos en donde explicaban esto y mucho mas, si los encuentro los posteare.

    1. Juan Ardissone

      Sería muy útil que los puedas compartir, gracias Nelson

    2. david

      Nelson, pudiste conseguir esos videos? :P

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

  4. Felicitaciones y gracias Juan.
    Mucha claridad y simpleza en esta guía. Justo lo que estaba buscando.
    Voy a seguirla.

    Saludos.

    L.

  5. Muchas felicidades Juan, fue un placer colaborar contigo en esta guía.

    1. Juan Ardissone

      Felicidades a ti también Maycol. Muy buen trabajo!

  6. Stiven Castillo

    Muchas gracias, esto es importante para los que estamos empezando en el desarrollo web con PHP.

  7. Traffic777

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

  8. Andres

    Excelente Gracias!!

  9. Pablo

    Llevo algun tiempo aprendiendo este framework, será de mucha utilidad sin dudas!
    Gracias!

    Saludos!

  10. Wilson

    donde y cuando…
    me interesa el curso….

    1. Juan Ardissone

      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

  11. Eugenia Bahit

    Excelente iniciativa Juan!!!
    Muy bien explicado, completo y simple de entender. Un +1000!! :)
    Un abrazo!

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

    1. Juan Ardissone

      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.

    2. Listo! gracias, espero con impaciencia el resto de capítulos de esta guía, se ve que será material muy valioso.

    3. Otra opción es clonarlo via repositorio de github https://github.com/symfony/symfony

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

    1. Juan Ardissone

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

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

  15. Miguel Plazas

    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

    1. Juan Ardissone

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

    2. 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 ;-)

    3. The Brain

      Sería bueno explicar eso: “un sistema con pocas posibilidades” en un término mas técnico sin fanatismo.

  16. Juan Pablo Zamora Veraza

    Muy útil guía, creo que me servirá bastante durante se desarrollo. Lo veré cada miércoles.

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

    1. Juan Ardissone

      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

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

  18. Excelente Tuto…de verdad que llena de emoción encontrar sitios como este… Mil gracias y sigan compartiendo.

  19. Muy buena iniciativa :aplauso:

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

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

  21. Gildus

    Gracias Juan por compartir el tutorial.

    Saludos

  22. HaroldV

    Muchisimas Gracias de verdad POr Compartir tus Conocimientos Qdaremos A espera de los demas Capitulos :)

  23. Gracias por la nueva guia.
    sigamos aprendiendo

  24. Oscar

    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

    1. Juan Ardissone

      Hola Oscar.

      Te has fijado que la versión mínima del PHP que usas sea el 5.3?

  25. Eduardo

    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.

    1. Juan Ardissone

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

  26. Roberto Cassidy

    Excelente emprendimiento Juan. Te deseo el mayor de los éxitos.

  27. Fernando Rodriguez

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

  28. Muy interesante. Hay alguna versión para MAC OS Leopard 10.0.X

    1. Juan Ardissone

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

    2. Basi

      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

  29. Lester

    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?

    1. Juan Ardissone

      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)

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

  30. angisela

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

    1. Juan Ardissone

      Te has fijado que la versión mínima del PHP que usas sea el 5.3?

    2. hola, yo tambien tengo el mismo problema, le puse php 5 y nada. Qué otra cosa podría ser?

    3. Juan Ardissone

      Fernando, comprobaste que le hayas puesto mínimamente la versión 5.3?

  31. Fatima

    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

    1. Juan Ardissone

      Fatima, más arriba se publicó la dirección por si quieras clonar el proyecto desde Github :-) ahí puedes ver los datos

    2. Fatima

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

  32. Ricardo

    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.

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

    1. Juan Ardissone

      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

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

  35. David

    Excelente iniciativa!!
    A ver si de una vez por todas consigo domar un framework de estos y crear una aplicación de verdad

  36. MaryIliana

    Buen dia, quisisera saber cada cuanto tiempo colocas un capitulo?- Muy Buen tutorial, pero estoy ansiosa por continuar. :(

    1. Juan Ardissone

      Marylliana estamos publicando un capítulo cada miércoles y son 13 capítulos en total :-)

    2. Mary Iliana

      Estaré pendiente el próximo miércoles.. Muchas Gracias

  37. Yero

    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…

    1. Juan Ardissone

      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

    2. Yero

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

    3. Juan Ardissone

      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

    4. Yero

      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…

  38. VeNoMZiTo

    Muchas gracias, pero no se pueden descargar los capítulos en PDF o algo para facilitar la lectura??

    Gracias de antemano.

    1. Juan Ardissone

      VeNoMZito tengo entendido que al terminar la publicación se preparará el PDF

  39. VeNoMZiTo

    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 …

    1. Eugenia Tobar
      Eugenia Tobar

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

  40. Rin@ldy

    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

    :)

  41. Luis

    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

  42. Juan Martiin Diaz

    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!

    1. Juan Ardissone

      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.

  43. Mauricio

    Nos puedes contar cuando sale el próximo capitulo del curso?

    Gracias, estoy pendiente de nuevas actualizaciones.

    1. Juan Ardissone

      Mauricio los capítulos salen cada miércoles. Este miércoles 29 sale el capítulo 3 que habla sobre crear páginas :-)

  44. adrian

    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?

    1. Juan Ardissone

      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.

  45. Haces que se vea fácil, felicitaciones, voy atrasado pero intento ponerme al día.

  46. Jose Luis

    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)

    1. Juan Ardissone

      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/

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

  48. En esta entrada de mi blog menciono varios enlaces de interes relacionados a Symfony 2

    http://jmolivas.com/drupal-8-symfony-2-y-wscci

  49. Benjamin

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

    1. Juan Ardissone

      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

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

    1. Juan Ardissone

      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

  51. Roberth

    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

    1. 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 ;-)

  52. Muchas gracias por este manual, muy detallado y didáctico..

    sigan así..

  53. armorfor

    muchicimas gracias por este tutorial, lastima q solo sea un capitulo por semana, espero con ansias terminarlo

    1. 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 ;-)

  54. Sergio

    Muchas gracias por el aporte, quisiera saber como se podria integrar SYMFONY2 con librerias js de EXTJS

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

Los comentarios de este post están cerrados. Si quieres seguir la discusión, debatir, criticar, sugerir o expandir el tema te invitamos a hacerlo en tu propio blog, en twitter o donde puedas publicar. No olvides enlazar a este post para que sigamos la conversación y se genere un trackback.