El framework Symfony, una introducción práctica (I parte)
Symfony es uno de los frameworks PHP más populares entre los usuarios y las empresas, ya que permite que los programadores sean mucho más productivos a la vez que crean código de más calidad y más fácil de mantener. Symfony es maduro, estable, profesional y está muy bien documentado.
Los frameworks simplifican el desarrollo de las aplicaciones mediante la automatización de muchas de las tareas comunes. Además, un framework proporciona estructura al código fuente, forzando al programador a crear código más legible y más fácil de mantener.
Aunque los frameworks existen desde hace décadas, y los frameworks para aplicaciones web también se utilizan desde hace mucho tiempo, el lanzamiento de Ruby On Rails en 2004 supuso una revolución en el desarrollo de las aplicaciones web que aún hoy continúa.
Symfony sigue la estela de Rails para simplificar al máximo el desarrollo de aplicaciones web profesionales con PHP, utilizando las mejores prácticas y los patrones de diseño más importantes. Symfony incorpora muchas de las ideas del RAD (“desarrollo rápido de aplicaciones”) para conseguir que la programación de las aplicaciones sea lo más productiva, correcta y divertida posible.
¿Qué es Symfony?
Symfony es un framework para construir aplicaciones web con PHP. En otras palabras, Symfony es un enorme conjunto de herramientas y utilidades que simplifican el desarrollo de las aplicaciones web.
Para los iniciados en los frameworks, Symfony es una de las mejores copias para PHP del famoso framework Ruby on Rails. Symfony ha tomado las mejores ideas de Rails y de muchos otros frameworks, ha incorporado ideas propias y el resultado es un framework elegante, estable, productivo y muy bien documentado.
Symfony emplea el tradicional patrón de diseño MVC (modelo-vista-controlador) para separar las distintas partes que forman una aplicación web. El modelo representa la información con la que trabaja la aplicación y se encarga de acceder a los datos.
La vista transforma la información obtenida por el modelo en las páginas web a las que acceden los usuarios. El controlador es el encargado de coordinar todos los demás elementos y transformar las peticiones del usuario en operaciones sobre el modelo y la vista.
Algunos datos importantes sobre Symfony: la primera versión se publicó en Octubre de 2005; su licencia es de tipo software libre; ha sido desarrollado por una empresa francesa llamada Sensio Labs; Yahoo ha elegido Symfony como su framework PHP de desarrollo, con el que ha construido Yahoo Bookmarks (20 millones de usuarios y 12 idiomas) y partes de Yahoo Answers y del.icio.us.
Desarrollando un microblog
La mejor forma de comprobar las posibilidades de Symfony y de compararlo con otros frameworks consiste en programar alguna aplicación. Debido a las limitaciones de espacio de este artículo, se va a programar un microblog, formado solamente por artículos y comentarios.
Los artículos disponen de título, contenido y fecha de creación. Los comentarios disponen de autor, contenido y fecha de creación. La relación de las tablas es “uno a muchos”, ya que cada artículo puede contener varios comentarios:
Instalar el framework Symfony
Los únicos requisitos para instalar y trabajar con Symfony son los de disponer de un servidor web, cualquier versión de PHP 5 y una consola de comandos del sistema operativo. Cumplidos los requisitos anteriores, Symfony se puede instalar de varias formas.
Si sólo se quiere probar el framework lo más rápido posible, se puede utilizar el “sandbox”, que es un archivo comprimido que contiene todos los archivos del framework. Después de descargar el sandbox, se descomprime en la carpeta principal del servidor y ya se puede acceder al framework vía http://localhost/sf_sandbox
.
Sin embargo, el método preferido de instalación de Symfony es mediante PEAR, ya que es tan sencillo como instalar el “sandbox”, funciona igual de bien en cualquier sistema operativo y se instala en menos de 1 minuto. Si se dispone de PEAR correctamente instalado, solamente es necesario ejecutar los siguientes comandos:
> pear channel-discover pear.symfony-project.com > pear install symfony/symfony
Este método es el preferido por los programadores porque es el más fácil de actualizar y permite que todos los proyectos desarrollados con Symfony compartan la misma versión del framework. En el resto de código de este artículo, se supone que se ha instalado Symfony mediante PEAR.
Para los programadores más avanzados y los que quieran estar permanentemente actualizados, también se puede instalar Symfony mediante su repositorio de Subversion.
Proyecto, aplicación y módulo
Symfony divide los proyectos web en aplicaciones y módulos. En nuestro ejemplo, el proyecto se denomina blog. Dentro de un proyecto, se pueden definir diferentes aplicaciones, todas ellas compartiendo el mismo modelo de datos y un mismo nombre de dominio.
Todos los proyectos web habituales suelen estar formados por una parte pública a la que acceden los usuarios y una parte de administración con la que los responsables del sitio manejan su funcionamiento y gestionan sus contenidos.
La parte pública (llamada normalmente frontend, por su nombre en inglés) sería una aplicación del proyecto y la parte de administración (llamada normalmente backend) sería otra aplicación distinta dentro del mismo proyecto. En nuestro ejemplo, el proyecto blog incluye dos aplicaciones llamadas frontend y backend.
Además, cada aplicación se puede dividir en varios módulos. Cada módulo suele corresponderse con una tabla de la base de datos, aunque no es obligatorio que así sea. Las aplicaciones de nuestro proyecto están formadas por dos módulos cada una, llamados articulo y comentario.
Cuando ya se han decidido las aplicaciones y módulos que forman el proyecto, se crea su estructura básica de archivos y directorios. En primer lugar se crea un directorio para el proyecto y a continuación, se ejecutan los siguientes comandos de Symfony desde el interior de ese directorio:
> symfony new blog > symfony app frontend > symfony app backend
Dependiendo del sistema operativo y de la instalación realizada, puede ser necesario utilizar el prefijo php antes de cada comando Symfony (por ejemplo: > php symfony new blog
). Además, todos los comandos Symfony se deben ejecutar siempre desde el directorio raíz del proyecto. Si se ejecuta el comando symfony sin argumentos, se muestra el listado completo de tareas disponibles.
Los comandos anteriores crean la siguiente estructura básica de archivos y directorios del proyecto blog y de sus dos aplicaciones:
apps/ frontend/ backend/ batch/ cache/ config/ data/ sql/ doc/ lib/ model/ log/ plugins/ test/ unit/ functional/ web/ css/ images/ js/ uploads/
La estructura de directorios creada por Symfony puede parecer excesiva, pero está completamente pensada para los proyectos web profesionales, de forma que el código de la aplicación se encuentre lo más ordenado y estructurado posible.
Symfony también permite cambiar el nombre y localización de todos los archivos del proyecto por si es necesario adaptarse a la estructura y normas de algún cliente en particular.
Base de datos y esquema
Una vez creada la estructura básica del proyecto, se definen las opciones de conexión con la base de datos y se crea el esquema que representa el modelo de datos del proyecto. Las opciones de conexión se definen en el archivo de configuración config/databases.yml
, en el que se deben descomentar todas sus líneas eliminando el carácter # que se incluye por defecto al principio de cada línea:
all: propel: class: sfPropelDatabase param: dsn: mysql://root:contrasena@localhost/blog
Los archivos de configuración de Symfony utilizan el formato YAML, el preferido por todos los frameworks modernos, en vez del tradicional y más aburrido formato XML. No obstante, Symfony permite utilizar archivos XML o INI si es necesario.
La única opción que se debe modificar es el dsn que define las opciones de conexión con la base de datos. Symfony permite utilizar bases de datos de tipo SQLite, MySQL, PostgreSQL, Oracle y SQL Server. Cambiar de base de datos sólo requiere modificar la opción dsn, ya que el resto de la aplicación funciona igual de bien con cualquier sistema gestor de base de datos.
La palabra all significa que estas opciones de conexión se utilizan en todos los entornos de ejecución, como se verá más adelante. La palabra propel es el nombre que se le da a esta conexión con la base de datos. Propel también es el nombre de una herramienta externa incluida en Symfony.
Propel es un ORM, lo que significa que, gracias a Propel, se puede trabajar con una base de datos sin utilizar instrucciones SQL. Para crear, obtener, modificar o borrar datos de la base de datos, no es necesario escribir ni una sola sentencia SQL, ya que se puede trabajar directamente con objetos, como se verá más adelante.
Una vez definida la conexión con la base de datos, se crea en el archivo config/schema.yml
el esquema de la base de datos que representa el modelo de datos del proyecto:
propel: blog_articulo: _attributes: { phpName: Articulo } id: titulo: varchar(255) contenido: longvarchar created_at: blog_comentario: _attributes: { phpName: Comentario } id: articulo_id: autor: varchar(255) contenido: longvarchar created_at:
El esquema define la estructura de tablas y columnas de la base de datos del proyecto. En este ejemplo, se definen dos tablas: blog_articulo
y blog_comentario
. Entre las numerosas opciones que puede definir cada tabla, se encuentra la opción phpName
, que indica el nombre de la clase PHP utilizada para manejar cada tabla. Las columnas se definen mediante su nombre y el tipo de dato que almacena.
El tipo de dato no es obligatorio, ya que en algunos casos, Symfony es capaz de deducirlo a partir del nombre de la columna. Si por ejemplo una columna se llama id, salvo que se le indique lo contrario, Symfony supone que es la clave primaria de la tabla y, por tanto, que es de tipo entero, que no puede tomar valores null y que su valor se autoincrementa.
Si una columna se llama xxxxxx_id
, Symfony supone que es una clave externa que hace referencia a la tabla xxxxxxx
(se puede utilizar el valor indicado en el atributo phpName
).
Otras columnas mágicas son created_at y updated_at. Si una columna se llama created_at, Symfony la considera de tipo “fecha y hora” y cada vez que se crea un registro en la tabla, Symfony se encarga de asignarle el valor correcto de forma automática. La columna updated_at
también se considera de tipo “fecha y hora” y su valor se actualiza automáticamente cada vez que se modifica el registro de la base de datos.
El esquema definido es independiente del sistema gestor de base de datos, por lo que si en cualquier momento del desarrollo del proyecto se decide cambiar de MySQL a SQLite o de PostgreSQL a Oracle, sólo se deben modificar las opciones de conexión del archivo config/databases.yml
.
Una vez definido el esquema, se ejecuta el comando symfony propel-build-model
para generar (en el directorio lib/model
) todas las clases PHP que se encargan de manejar la base de datos mediante objetos. Por otra parte, el comando symfony propel-build-sql genera (en el archivo data/sql/lib.model.schema.sql
) el archivo SQL que permite crear la base de datos.
Si se utiliza MySQL como en este ejemplo, el archivo SQL generado tiene en cuenta la sintaxis particular de MySQL y se puede utilizar directamente para crear la base de datos mediante el comando:
mysql -u USUARIO_BASE_DATOS -p NOMBRE_BASE_DATOS < data/sql/lib.model.schema.sql
También es posible utilizar el comando symfony propel-build-all para generar de forma simultánea las clases del modelo y el archivo SQL. Los comandos anteriores se utilizan cuando no existía previamente la base de datos.
Si antes de empezar el proyecto Symfony ya dispones de una base de datos, puedes hacer el trabajo inverso: generar el esquema y las clases PHP a partir de una base de datos existente.
Configurar el servidor web
Una buena práctica cuando se desarrollan aplicaciones web consiste en crear un servidor virtual por cada proyecto. Symfony también recomienda lo mismo para cada proyecto.
De esta forma, se puede acceder a nuestro proyecto mediante una URL sencilla como http://blog
, en vez de http://localhost/blog
, http://localhost/sf_sandbox/blog
o cualquier otra URL más larga.
Para crear el servidor virtual, se configura un nuevo VirtualHost en Apache (en las versiones más recientes de Apache, se configura en el archivo httpd-vhosts.conf
):
<VirtualHost *:80> ServerName blog DocumentRoot "/home/proyectos/blog/web" DirectoryIndex index.php Alias /sf /php/pear/data/symfony/web/sf <Directory "/php/pear/data/symfony/web/sf"> AllowOverride All Allow from All </Directory> <Directory "/home/proyectos/blog/web"> AllowOverride All Allow from All </Directory> </VirtualHost>
El valor de la directiva DocumentRoot es la ruta completa hasta el directorio web dentro del proyecto. El Alias definido es necesario para que se vean las imágenes, JavaScripts y CSS del propio framework (que se utilizan en el entorno de desarrollo) y debe contener la ruta completa hasta el directorio web/sf dentro del directorio en el que se ha instalado Symfony.
Antes de poder acceder al proyecto mediante la dirección http://blog
, es necesario editar el archivo /etc/hosts
(si utilizas Linux) o c:\WINDOWS\system32\drivers\etc\hosts
(si utilizas Windows) para indicar que blog es un nombre que realmente hace referencia al propio ordenador de desarrollo:
127.0.0.1 localhost 127.0.0.1 blog
Si la configuración anterior se realiza correctamente, al acceder a la dirección http://blog
se muestra la página de bienvenida por defecto de Symfony:
Entornos de ejecución
Las aplicaciones Symfony se pueden ejecutar en diferentes entornos, todos ellos compartiendo el mismo código PHP pero diferenciándose en la configuración utilizada. Cuando se crea una aplicación, Symfony crea por defecto tres entornos: producción (prod), pruebas (test) y desarrollo (dev). Además de estos entornos iniciales, se pueden crear todos los entornos adicionales que se consideren necesarios.
Lo que diferencia un entorno de otro son las opciones con las que se ejecuta la aplicación. En el entorno de desarrollo, Symfony registra en el archivo de log todos los mensajes que se producen y desactiva la caché, para que todos los cambios en la configuración de la aplicación tengan un efecto inmediato. En el entorno de producción, sólo se guardan en el archivo de log los mensajes de error y la caché se activa para mejorar el rendimiento de la aplicación.
La definición de varios entornos permite utilizar una base de datos cuando se desarrolla la aplicación y otra base de datos diferente cuando la aplicación se encuentra en el servidor de producción. En los archivos de configuración, todas las opciones que se indican bajo la palabra dev: tienen efecto en el entorno de desarrollo, las opciones bajo prod: se utilizan en el entorno de producción y las opciones bajo all: son utilizadas en todos los entornos en los que se ejecuta la aplicación.
Las aplicaciones Symfony utilizan un patrón de diseño conocido como “controlador frontal”, que consiste en utilizar un único punto de entrada a cada aplicación. Concretamente, todas las peticiones que realiza el usuario se controlan mediante un único script de PHP, que se encarga de redirigir las peticiones a cada módulo y acción correspondientes en cada caso.
Symfony crea en el directorio web del proyecto dos controladores frontales para cada nueva aplicación. El controlador frontal de desarrollo se denomina nombreAplicacion + _dev.php
, por lo que en este ejemplo, Symfony crea los controladores frontend_dev.php
y backend_dev.php
. El controlador frontal de producción de la primera aplicación creada (en este ejemplo, la aplicación frontend) se denomina index.php
y el del resto de aplicaciones se llaman igual que la aplicación (en este ejemplo, backend.php
).
De esta forma, para acceder a la aplicación frontend en el entorno de producción, se utiliza la URL http://blog/index.php.
Si Apache tiene habilitado el módulo mod_rewrite para reescribir las URL, se puede utilizar directamente http://blog
.
Para acceder a la aplicación frontend en el entorno de desarrollo, se utiliza la URL http://blog/frontend_dev.php
. De la misma forma, la aplicación backend se puede acceder en el entorno de producción (http://blog/backend.php
) y en el de desarrollo (http://blog/backend_dev.php
).
Cuando se accede a una aplicación en el entorno de desarrollo, cualquier cambio que se haya realizado en su configuración tiene efecto inmediato. Sin embargo, el entorno de producción utiliza la caché de configuración, por lo que debe borrarse esta caché cada vez que se quiera acceder en producción y que se tengan en cuenta los cambios realizados. Para borrar la caché, se utiliza el comando symfony cc
.
Crear la parte de administración del blog
La programación de la parte de administración de una aplicación web es siempre la parte más aburrida del desarrollo. Además, en general, la administración de una aplicación consiste en realizar cuatro operaciones básicas sobre sus datos: crear, modificar, borrar y obtener registros de la base de datos.
Afortunadamente, Symfony dispone de las herramientas necesarias para crear una completa administración de forma automática. En pocos segundos y sin necesidad de escribir ni una sola línea de código, la aplicación puede disponer de una parte de administración con soporte de las cuatro operaciones básicas.
Utilizando el esquema de la base de datos definido anteriormente y ejecutando un par de comandos sencillos, Symfony genera todas las acciones y módulos encargados de la gestión de los datos. En concreto, los siguientes comandos crean la parte de administración de los artículos y de los comentarios:
> symfony propel-init-admin backend articulo Articulo > symfony propel-init-admin backend comentario Comentario
Al comando propel-init-admin
se le debe pasar el nombre de la aplicación (backend), el nombre que tendrá el módulo generado automáticamente (articulo) y el nombre de la clase PHP que se encarga de representar la tabla de datos (Articulo).
Después de ejecutar los comandos anteriores, ya se puede acceder a la parte de gestión de los artículos en la dirección http://blog/backend.php/articulo
. Por defecto, el módulo muestra el listado de artículos disponibles en la base de datos. Como todavía no existe ningún artículo, se pulsa sobre el botón Create para crear varios artículos de prueba:
La parte de gestión de los comentarios es idéntica a la de los artículos, salvo que en este caso, el formulario de creación del comentario también muestra la clave externa que hace referencia a los artículos. Para mostrar la clave externa, Symfony utiliza el método mágico de PHP llamado __toString()
.
Si no se ha definido este método, se muestra directamente el valor numérico de id. Si se quiere mostrar el título del artículo en vez de su id, tan sólo se debe definir el método mágico __toString()
en la clase del modelo de los artículos (en el archivo lib/model/Articulo.php
):
class Articulo extends BaseArticulo { public function __toString() { return self::getTitulo(); } }
Ahora, al mostrar o modificar los datos de un comentario, se muestra el título del artículo al que hace referencia:
El generador automático de administraciones permite modificar por completo sus características sin necesidad de escribir ni una sola línea de código. Cualquier característica que se quiera añadir, modificar o eliminar a la parte de administración se puede realizar simplemente añadiendo una opción de configuración en el archivo generator.yml
que se encuentra en el directorio config de cada módulo generado automáticamente.
Las siguientes opciones modifican el listado de comentarios para incluir unos filtros o buscadores, para indicar que el máximo número de comentarios que se muestran en el listado debe ser 5 y que cada fila de datos sólo debe mostrar el autor y el contenido del comentario:
generator: class: sfPropelAdminGenerator param: model_class: Comentario theme: default list: display: [autor, contenido] filters: [articulo_id, contenido, created_at] max_per_page: 5
Después de modificar esta configuración, no olvides utilizar el entorno de desarrollo (backend_dev.php
) o borrar la caché de la configuración mediante el comando symfony cc. El resultado de la nueva configuración se muestra en la siguiente imagen:
Symfony se encarga de crear el filtro o buscador adecuado en función del tipo de dato de cada filtro (lista desplegable <select>
para el articulo_id
, <input>
para contenido y calendarios para created_at
). Además de estas opciones básicas, el generador de Symfony dispone literalmente de cientos de opciones, para poder personalizar la parte de administración generada automáticamente.
Configurando a medida la parte de administración y aplicándole una hoja de estilos CSS propia, es posible crear una completa parte de administración en pocos minutos y con la calidad suficiente como para satisfacer a cualquier cliente.
Conclusión
En esta primera parte del artículo, apenas se han esbozado algunas de las posibilidades del framework Symfony. No obstante, se ha podido comprobar cómo se puede crear toda la parte de administración de una aplicación web en pocos minutos.
Symfony permite olvidarse de las tareas aburridas y repetitivas para centrarse en el trabajo que realmente aporta valor a las aplicaciones. La segunda parte del artículo se centra en realizar algunas funcionalidades de la parte pública del blog.
En Libros Web hay una guia sobre Symfony.
Link:http://www.librosweb.es/symfony/index.html
Gracias
Si no me equivoco, esto es de LibrosWeb.es.. pero bueno…
[…] Eguiluz acaba de recibir la buena nueva sobre la publicación de su artículo llamado: “El framework Symfony, una introducción práctica (I parte)“, en Maestros del […]
Si bien parte de este artículo es de LibrosWeb, creo que es muy bueno que continúen en ese camino. De hecho los insto a seguir con estos artículos ya que se nota que es un resumen, un poco mejor explicado de la traducción original, pero en los próximos es necesario que puedan explicarlos más claramente. Realmente eso sería un aporte porque son muy extenso y complicado los originales, y mantienen la pluma creo que culminarán de excelente manera esta inicitariva.
Por otra parte, alguien sabe si alguien ha traducido el proyecto de 24 días askeet al español? , lo digo mientras espero los próximos artículos de maestrosdelweb.
es un framework muy bien estructurado, yo tambíen estoy empezando con el.
Muchas gracias por el articulo, aunque no dice mucho más que el libro
Saludos
una pregunta : en la sección “Desarrollando un microblog” existe una imagen de un modelo de BD.
ese modelo con que software se hizo?
Vladimir, el modelo de la base de datos se ha realizado con la herramienta “MySQL Workbench” (http://www.mysql.com/products/tools/workbench/).
El programa se puede descargar de forma gratuita junto con el resto de herramientas de MySQL en http://dev.mysql.com/downloads/gui-tools/5.0.html
Este framework es muy bueno, llevo trabajando con el cási 1 año y es muy estable… Podría sugerir un artículo sobre otro framework que parece estar aún mejor: Zend Framework.
Un saludo.
excelente articulo creo que empesare a usar esto como framework 😉
Muy buen articulo, recien estoy comenzando y espero ansiosamente la segunda parte.
PD: la traduccion de askeet al español por favor!!!
De antemano muchas gracias por sus publicaciones, pero más que un comentario tengo un problema al implementar el ejemplo y probar me encuentro con el siguiente error:
Oops! An Error Occurred
The server returned a “500 Internal Server Error”.
Será posible que me indiquen que puede estar ocurriendo, por su atención muchas gracias.
[…] En la primera parte se presentaba el framework, se configuraba el entorno y se desarrollaban algunos elementos de la parte de administración. En esta segunda parte, se presentan los módulos, acciones y plantillas, se da una idea básica de los enlaces y el sistema de enrutamiento y se habla brevemente de otras cosas como los plugins. […]
Mauricio, la mejor forma de solucionar los errores de programación con Symfony consiste en preguntarlos en la lista de usuarios de Symfony en español:
http://groups.google.com/group/symfony-es
En tu pregunta no olvides indicar la configuración que has hecho, la forma de instalación de Symfony, el sistema operativo y servidor web que usas, etc.
Mauricio Montecinos Aguirre ese error es común para los que recién comienzan.
Leete el manual aqui
http://www.librosweb.es/symfony/index.html
y las consultas las haces en la comunidad que menciona Javier.
Javier.
Alejandro.
Muchas gracias por sus comentarios.
Saludos,
[…] El framework Symfony, una introducción práctica (I parte) (tags: php) […]
estoy con el tutorial y solo hacer un comentario sobre como usar innodb en lugar de tablas myisam
en config/propel.ini
añadir
propel.mysql.tableType = InnoDB
http://www.symfony-project.com/askeet/1_0/2
[…] El framework Symfony, una introducción práctica (I parte) […]
[…] maestros de web han publicado El framework Symfony, una introducción práctica (I parte) y El framework Symfony, una introducción práctica (II parte) […]
Amigo este mini tutorial esta buenisimo, pero te falto algo, no mensionaste que habia de borrar la cache del proyecto (symfony cc).
Por esto e pasado casi 3 dias quebrandome la cabeza con el erro 500 , el cual no me dejaba avanzar y que tambien mensiona Mauricio mas arriba
No lo tomen a mal, solo es mi aporte a este mini tutorial.
ups disculpa, parece que si lo mensionas en una linea, tengo que comprar lentes :s
roberto, porque estuviste trabajando en el entorno de producción, porque en entorno de desarrollo no es necesario borrar la cache.
vaya, sigo todo al pie de la letra pero no me sale absolutamente nada cuando me meto en esa página, dónde se supone que se crea el index.php de inicio y en qué paso?
Excelente tutorial para empezar!
Muy buen artículo. Aprovecho para preguntar el significado de _attributes al definir el esquema de las tablas de la base de datos.
hola muy buen articulo…. he seguido al pie de la letra pero hay algo que no me sale, estoy trabajando con el windows uE, pero al darle http://blog/ me sale la pagina del localhost y no la de symfony en donde podria estar mi error. las librerias de symfony las baje con PEAR y utilizo appserver
bueno ya despues de varias pruebas por fin lo solucione, lo que pasa es que modificaba el archivo httpd-vhosts.conf y no lo cargaba asi que modifique el httpd.conf y ahy si funciono solo que me carga la pagina sin los estilos y las imagenes a que se debera?
hola quetal
yo queria saber que ventajas tiene este framework en comparcion a cakephp. Cual de los dos es el mejor?
saludos
gracias colega ace tiepo estoy trabajando con symfony.
y ahora la estamos instalando en nuestro proprio servr
Salud
Carlos me alegra que te haya funcionado, yo tuve el mismo problema, para que te salgan las imágenes y los estilos propios del symfony tienes que referenciar ahi mismo el Alias que explican más arriba en este articulo (que es donde se encuentra el archivo web/sf, dentro de donde instalaste el symfony en tu pc)
me parece interesante esta herramienta de programacion, me gustaria enseñarla a mis estudiantes de informatica prara que la utilicen en sus proyectos
si pueden facilitarme algo mas de material y ejemplos de su uso se lo agradeceria
Esta super el tutorial, lo he seguido al pie de la letra y me a abierto la mente hacia este gran fremework.
Por favor necesito ayuda con un error que me aparece al tratar de cargar la direccion http://blog/backend.php/articulo, me aparece el error 500, y si le doy en backend_dv.php/articulo me dice propelexception No connection params set for propel, alguien me puede ayudar gracias de antemano…
La verdad un buen articulo .PERO no se que pasa seguí todo al pie de la letra pero no me corre. Instale el WampServer me sale todo bien con los ejemplos de “Hola Mundo” pero al momento de realizar pruebas con base de datos (MySql) me sale error al conectarse .
No se si será mucho pedir si por ahí hay la posibilidad de crear un ejemplito generando el esquema y las clases PHP A PARTIR DE UNA BASE DE DATOS EXISTENTE. Por que probé de todo y nada. Y buscando en Internet no hay nada
Bueno, he conseguido ver los “artículos” si ejecuto http://blog/backend_dev.php/articulo, si lo hago en el entorno “producción”, también me sale el error 500.
[…] maestros del web tenemos dos artículos (I y […]
MIren mi problema es a la hora de instalar symfony, hago todo lo que me dicen en cada tutorial que he encontrado pero al parecer nunca llogro que me reconozca los comands de symfony, por favor si alguno de ustedes pudiera añadir la configuracion para lograr el funcionamiento de esto se lo voy a agradecer.
Saludos
Hola… considero que la información expuesta esta muy completa y bastanta buena… sin embargo, tengo aún muchas dudas en como implementar o usar el gestor de base de datos postgreSQL en Symfony, realmente antes no habia escuchado sobre el framework, por lo que es algo TOTALMENTE nuevo para mi… me gustaria puedan ayudarme en eso y muchas otras cositas mas…
Muchas Gracias de antemano..!
Me gustaría saber cuál es la sintaxis de la línea de comando para xampp en windows en local ya que no consigo ejecutar ningún comando y si hay algún artículo sobre este tema. Gracias.
hola, yo tuve el mismo problema que Cristobal, no logro solucionar eso, gracias
El error 500 se les puede estar presentando por dos cosas:
1. El archivo databases.yml pro defecto viene con unos simbolos # al inicio de cada linea, esto son comentarios y deben quitar cada uno de estos simbolos para que quede bien el archivo. Es decir copien y peguen exactamente como esta el enunciado el archivo en este tutorial y reemplanzen los valores de su conexión a base de datos.
2. puede ser que les falta instalar elmodulo XSL/XSLT el cual pueden instalar en Ubuntu, que es donde estoy trabaiando con las siguientes instrucciones:
sudo apt-get install libapache2-modxslt php5-xsl
y luego recinien el servicio apache2ctl
con sudo apache2ctl restart
Les recomiendo que mejor empiecen el proyecto de nuevo, asi se curaran de estos errores y de que symfony no les genere warnings.
Espero les sirva.
Saludos, Carlos Pérez, desde Pereira, Colombia
Hola amigos:
Estoy interesado en symfony y quisiera empezar a trabajar con el desde ya, para ello me estoy documentando y ademas quiero ir instalando la tecnologia requerida zpa ztrabajar con el framework, pero no encuentro el PEAR y quisiera saber donde esta disponible.
Saludos.
He medio leido el libro de symfony, pero tunexplicación es mucho más clara y concisa.
Gracias
[…] ahora crearemos el Proyecto(BLOG) y las aplicaciones(FRONTEND, BACKEND), aqui fue que siguiendo este tutorial no era lo mismo, al fin resolvi y genere lo que pedian. Primero creas una carpeta en tu htdocs, o […]
Gracias Javier por esta info. Es el mejor material en español que encontré. Con mi equipo de desarrollo empezamos a probar hace poco symfony y cakephp. Este tutorial, aunque es básico, ha sido de gran ayuda.
Saludos!
Hola, recien comienzo a utilizar el Framework y me gustaria implementar este ejemplo, pero tengo problemas con la instalacion de Symfony, pues no tengo internet pero si consto con el .zip [symfony-1.1.0.zip]. Quisiera que alguien me ayudara para asi seguir co los pasos del tutorial.
Gracias de antemano.
Hola, gracias por el tuto, pero tengo una duda:
Al principio cuando decis lo de los comandos new y App, lo ejecuto y me sale este error:
“Task new is not defined” y “Task app is not defined”, cuando pongo el comando symfony sin nada, me dice los comandos que tengo disponibles pero el new no aparece, y el app aparece “:app”, lo pongo y me dice que “There are no tasks defined in the “” namespace”
a qué se debe???
Bye bye
oye gin, que usas, el symfony desde PEAR o el sandbox? y que version 1.0.X o 1.1.X?
Si te fijas al introducir el comando symfone en el promt, te salen todos los comandos, en las versiones 1.0 y 1.1 algunas varian
el app se ejecuta asi
symfony init:app (en 1.1)
o
symfony init-app (en 1.0 y 1.1)
el comando app te crea una nueva aplicación, mientras que el comando new te crea un nuevo proyecto.
Si usas el sandbox de symfone no es necesario crear un proyecto, solo crea las aplicaciones frontend y frontend.
Saludos.
Hola!
Mira, tengo el symfony instalado desde Pear y es la versión 1.1.4, probé los comandos pero me aparece lo mismo, sólo que cuando me aparece el mensaje de “There are no tasks defined in the “” namespace” entre las comillas del medio me pone “init”, la verdad no tengo ni idea de qué es, supongo que tendré que definirlas en ese famoso “namespace” pero no sé cómo se hace, y además de que no encuentro el new, y tengo el sandbox instalado pero igual, no me ejecuta los comandos.
Si sabés qué es de+ !!!
Bye bye
Wenas
gin prueba con > symfony init-project blog
> symfony init-app frontend
> symfony init-app backend
por lo menos a mi me funciono asi..
chauu
tengo un problema a la hora de conectar una base de datos mysql en appserv me sale un error alguien me puede ayudar
quisiera si alguno puede enviarme una pagina donde yo pueda aprender a realizar una pagina web utilizando el symfony, que venga bien explicado para poder entenderlo bien.
Hola,
yo también tuve el problema de “Task new is not defined” y mirando el comando
>symfony -v
me salieron todas las opciones que tiene symfony. Desde aquí vi que el comando era:
>symfony generate:new loquesea
>symfony generate:app loquesea
espero que sea de ayuda.
Saludos!
Algien sabe de algun portal que realize cursos virtuales de sympony???
Hola, solo queria saber lo mismo que pregunto vladimir en el post 5, la imagen que tienes en la parte de “Desarrollado un Microblog” con que software esta hecha ??
vi lo de mysql administration tool y query browser y en ningun lado puedo verlas asi…
ayuda porfavor 😀
Hola
quisiera que alguien me dijera cuanto antes, donde puedo encontrar el diagrama de clases de Symfony 1.0.x !!!!!
Hola, alguien tiene idea de como instalar symfony con las librerias completas sin conexion a internet en localhost utilizando PEAR.
excelente!, pero antes de empezar con el blog recomiendo leer la “Symfony, la Guía Definitiva” de Fabien Potencier.
Saludos
Holas
Muy bueno el tutorial, pero no logro que me cargue las imagenes. Estoy trabajando sobre windows y el host virtual es el siguiente:
NameVirtualHost 127.0.0.1:1025
Listen 127.0.0.1:1025
DocumentRoot “C:\xampp\htdocs\xampp\groupManagement\web”
DirectoryIndex index.php
AllowOverride All
Allow from All
Alias /sf C:\xampp\htdocs\xampp\groupManagement\lib\vendor\symfony\data\web\sf
AllowOverride All
Allow from All
Revise las direcciones de sf pero al parecer estan bien. Que puede ser?
Muchas gracias
Todo muy bueno
[…] de introducción a Symfony: parte 1 y parte […]
Hola:
Ya descargue el sf_sandbox de symfony, trabajo en WindowsXP y estoy teniendo problemas a la hora de hacer un nuevo proyecto, cuando ejecuto el comando symfony generate:app frontend en la carpeta donde tengo el sandbox me dice que php.exe no se reconoce como un comando interno o externo, no tengo idea de que es esto, pues anteriormente trabajaba con Ubuntu y esto no sucedia, tenmgo instalado el Wamp y la version de php es 5.3.0, alguien podria decirme que puedo hacer porque no puedo ni siquiera crear un nuevo modulo dentro del frontend.
Saludos
Gracias
Hola …
Estoy comensando con Symfony y me quede en la configuracion del servidor web.
No puedo configurar….
Hola, te agradeceria si tienes información de como crear sesiones en Symfony para manejar dos tipos de usuario.
He tratado con el libro pero no he podido, agradezco si alguien tiene informacion al respecto.
lo que te dice es que al ingresar el comando “php” no encuentra el programa “php.exe”.
Intenta probando algo como lo siguiente:
1.- busca donde esta el ejecutable “php.exe”
2.- dentro de la linea de comandos dentro de tu proyecto symfony
ingresa:
c:/lugardemiproyectosymfony> c:/lugardemiphp/php symfony -V
en este caso debe de mostrarte el numero de version de symfony trabajando con php, si sale un error es porque sigue sin encontrar el lugar donde esta el php.exe.
3.-para no tener que ingrear algo tan largo como:
“c:/lugardemiphp/php”
en la linea de comandos incluyela en el path (busca con google)
es muy facil
Hola Roberto pero te cuento que en este mini tutorial dice millón veces que debes borrar la caché. =)
Hola, quisiera saber en la consola donde me debo parar para crear la base da datos….
Gracias
Hola soy una estudiante y me mandaron un tarea sobre symfony necesito saber como se maneja la información cifrada, la seguridad en aplicaciones Web y en el acceso a Bases de Datos y deficiencias en la programación. Por favor ayudenme que no encuentro nada. Gracias de antemano.
sería doctrine:app por ejemplo, justamente
Acabo de instalar el framework 1.4, y los comandos son distintos, ya encontré los apropiados para mi versión, aunque tengo una duda, en vez del propel-init-admin backend articulo Articulo, utilicé propel:generate backend Articulo –module=articulo
Hecho esto, me dirigía blog/backend.php/articulo
Pero me sale una página en blanco.
Sería de extrema ayuda que actualizara este artículo a la versión más actual.
No he logrado arrancar ni un sólo mini proyecto (Jobeet lo estoy dejando para después, pues es bastante largo, son 28 días!), ya que la mayoría de tutos están para versiones más viejas.
Saludos! Se agradece cualquier tipo de orientación.
[…] http://www.maestrosdelweb.com/editorial/el-framework-symfony-una-introduccion-practica-i-parte/ […]
Por favor estoy usando Symfony con xammp lo muestre modificando el archivo del apache httpd.conf par el puerto 9090 en esta direccion se me muestra el proyecto http://localhost:9090/ y puedo ver el frontend y el backend pero no me deja acceder a los modulos, me muestra
Apache HTTP Server ha detectado un problema y debe cerrarse.
Es posible que haya perdido la informacion en la que se encontraba trabajando.
Y luego me muestra la pagina en blanco, si me pueden ayudar SE LOS AGRADECERE PUES ES PARA MI TESIS
holaaaaaa!, bueno io he seguido los pasos asi como esta en este tutorial, y me ha salido todo bien hasta cuando sale la pagina symfony, pero ia en lo que es entornos de ejecucion y pongo (http://blog/backend_dev.php) me sale “opps …. the server returned a 404 response” ….. que debo hacer :S
Hola, yo tenia instalado symfony 1.4 por PEAR y tube muchas complicaciones.
Entonces decidi instalar symfony como lo trae el libro jobeet 1.3, cambian muchas cosas, pero es cuestion de leer y ponerle atencion y logras mismo resultados. Es excelente este Framework, lo recomiendo mucho, se pueden crear aplicaciones muy rapido.
El problema que me encontre fue con el Doctrine, ya que todos los manuales de la pagina oficial por lo regular estan hechos con Propel, asi que despues de muchas batallas lo logre.
Saludos, y no dejen de intentarlo, nada se pierde.
llevo casi 6 años programando todo tipo de aplicaciones en php con mysql y en todos ellos he codeado desde cero lo cual para mi es una gran ventaja al ya tener mi propia libreria de clases multiuso desde CMS’s hasta aplicaciones logisticas: inventarios, compras, contables etc…, ahora ando un poco confundido con esto de instalar y usar un framework x, leendo foros un porcentaje amplio de comentarios de desarrolladores experimentados no recomiendan el uso de estos por su gran cantidad de codigo innecesario y el aprendizaje de este mismo se hace muy largo ademas de depender de actualizaciones de los mismos creadores al code del framework. seguire investigando byeeeeeee
mas que un comentario quiero hacer una pregunta:
necesito saber como puedo solucionar este error que tengo cuando intento generar un modulo de mi aplicacion.
Notice: Undefined index: Tbdocumentodoc in /home/sgf2/NetBeansProjects/SGF_Inspeccion/lib/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/map/DatabaseMap.php on line 185
Fatal error: Call to a member function getColumn() on a non-object in /home/sgf2/NetBeansProjects/SGF_Inspeccion/lib/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/map/TableMap.php on line 464
siiii
me pasa lo mismo!
qué se puede hacer?
Hola
seria bueno que dijeran en que Sistema operativo trabajan, como intentan instalar symfony (mediante pear, netbeans, etc)…
a ver si se les puede ayudar
saludos
Hola,
Buen tutorial, mi duda es si tiene limitaciones para crear proyectos web de complejidad alta?
Saludos, At Hoteles
Hola a todos, necesito saber como hacer funcionar localmente, un proyecto hecho en symfony 1.2.9. Me descargue las carpetas del servidor de producción, genere un script de la BDD. Genere la BDD localmente copie las carpetas en c:xampp/htdocs/…. Se suponia que ahí debe correr y nada
Alguien que me ayude por favor
Saludos Felipe.
Veo que llevas bastante tiempo trabajando con symfony; me gustaría si me pudieras orientar con un paso a paso de como montar symphony2 en mi windows 7, ya que deseo empezar a cacharriar con este nuevo framework que promete ser mejor que su antesesor.
No soy muy experto en la materia peri si deseo incursionar en algo nuevo y mas reciente SYMPHONY2.
Gracias por tu colaboración.
Un amigo más
William