Un espacio para los entusiastas del web

El framework Symfony, una introducción práctica (I parte)

Publicado el 6 de Septiembre, 2007

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:

symfony_bdatos.jpg

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.

symfony_ima2.jpg

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:

symfony_ima3.jpg

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:

symfony_ima4.jpg

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:

symfony_ima5.jpg

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_ima6.jpg

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.

Otros artículos relacionados

Califica esta nota:

1 estrella2 estrellas3 estrellas4 estrellas5 estrellas (26 votos, promedio: 4.73 de 5)
Loading ... Loading ...

Comentarios

  1. En Libros Web hay una guia sobre Symfony.

    Link:http://www.librosweb.es/symfony/index.html

    Gracias


  2. Si no me equivoco, esto es de LibrosWeb.es.. pero bueno…


  3. Marco Andrades

    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.


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


  5. una pregunta : en la sección “Desarrollando un microblog” existe una imagen de un modelo de BD.

    ese modelo con que software se hizo?


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


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


  8. excelente articulo creo que empesare a usar esto como framework ;)


  9. Alejandro Jesús Perazzo

    Muy buen articulo, recien estoy comenzando y espero ansiosamente la segunda parte.
    PD: la traduccion de askeet al español por favor!!!


  10. Mauricio Montecinos Aguirre

    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.


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


  12. Alejandro Jesús Perazzo

    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.


  13. Mauricio Montecinos Aguirre

    Javier.
    Alejandro.

    Muchas gracias por sus comentarios.

    Saludos,


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


  15. roberto

    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.


  16. roberto

    ups disculpa, parece que si lo mensionas en una linea, tengo que comprar lentes :s


  17. Alejandro Jesús Perazzo

    roberto, porque estuviste trabajando en el entorno de producción, porque en entorno de desarrollo no es necesario borrar la cache.


  18. Patroklo

    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?


  19. Excelente tutorial para empezar!


  20. Esteve

    Muy buen artículo. Aprovecho para preguntar el significado de _attributes al definir el esquema de las tablas de la base de datos.


  21. Carlos

    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


  22. Carlos

    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?


  23. hola quetal
    yo queria saber que ventajas tiene este framework en comparcion a cakephp. Cual de los dos es el mejor?
    saludos


  24. gracias colega ace tiepo estoy trabajando con symfony.
    y ahora la estamos instalando en nuestro proprio servr :)
    Salud


  25. HM

    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)


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


  27. Harold

    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…


  28. Cristobal

    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


  29. quisoc

    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.


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


  31. Ana Karina

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


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


  33. horacio

    hola, yo tuve el mismo problema que Cristobal, no logro solucionar eso, gracias


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


  35. Hector Luis

    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.


  36. Alfredo

    He medio leido el libro de symfony, pero tunexplicación es mucho más clara y concisa.

    Gracias


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


  38. Relvis

    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.


  39. gin

    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


  40. McDawn

    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.


  41. gin

    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


  42. Pablo

    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


  43. alejandro

    tengo un problema a la hora de conectar una base de datos mysql en appserv me sale un error alguien me puede ayudar


  44. eli

    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.


  45. kinginyellow

    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!


  46. radix

    Algien sabe de algun portal que realize cursos virtuales de sympony???


  47. 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 :D


  48. Yas

    Hola

    quisiera que alguien me dijera cuanto antes, donde puedo encontrar el diagrama de clases de Symfony 1.0.x !!!!!


  49. DieterCuba

    Hola, alguien tiene idea de como instalar symfony con las librerias completas sin conexion a internet en localhost utilizando PEAR.


  50. fabian

    excelente!, pero antes de empezar con el blog recomiendo leer la “Symfony, la Guía Definitiva” de Fabien Potencier.

    Saludos


  51. Federico

    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


  52. pepe

    Todo muy bueno


Deja tu Comentario

Maestros del Web se reserva el derecho de moderación de los comentarios. Evita utilizar palabras soeces, ataques directos, descalificativos, insultos, de lo contrario tu comentario será eliminado.


Sobre el Autor

Javier Eguiluz
Ingeniero de telecomunicaciones, programador y formador en tecnologías web a través de cursos, libros y su propio sitio web.

Más artículos de Javier Eguiluz

Las Notas en tu correo


Acerca de

Maestros del Web nace cuando intentamos traducir Webmaster al Español. Nacimos orientados al diseño y desarrollo web. Hoy somos un espacio de apoyo para los entusiastas que participan en proyectos en la red.
Leer más de Maestros del Web