Este blog esta destinado para la comunidad desarrolladora de software, en el podrán encontrar trucos, atajos o consejos de diferentes lenguajes de programación o frameworks, tanto de tipo desktop como web. Si quieres participar como editor por favor hacerlo saber escribiendo un correo a cualquiera de los editores.

viernes, 11 de junio de 2010

Crear proyecto en Symfony + Extjs

Ya he visto cosas muy raras, así que voy a sugerir una forma de trabajar en Symfony y Extjs desde el principio y con calma. La versión de Symfony que sera usada, sera la 1.2.9 con el ORM Propel.

Para empezar instalamos Symfony como lo he puesto en las otras entradas o como quiera complicarse la vida (yo uso linux ubuntu no por rápido ni seguro ni nada de eso, simplemente por que es muy fácil trabajar allí), a continuación creamos el proyecto en nuestro servidor web, por ejemplo en /var/www/ , en el public_html de una cuenta, o si es win en c:\xampp\htdocs.

Para crear el proyecto recomiendo crear una carpeta como por ejemplo Proyecto, nos situamos dentro de ella y ejecutamos:

symfony generate:project Proyecto

esto nos creara todas las carpetas con la arquitectura usada por symfony. ahora crearemos una aplicación, para esto, allí mismo en la carpeta del proyecto ejecutamos:

symfony generate:app Aplicacion
esto creara una carpeta llamada Aplicacion en la carpeta apps del proyecto, lo siguiente es crear un modulo para esa aplicacion, allí mismo en la carpeta del proyecto ejecutamos:

symfony generate:module Aplicacion Modulo

Aplicacion= aplicacion creada anteriormente
Modulo= modulo de la aplicación creada anteriormente

esto creara una carpeta llamada Modulo en la carpeta Modules de la carpeta de la aplicación creada anteriormente, ya con esto podemos trabajar, pero antes debemos configurar algunos archivos:
  • databases.yml (configuración de conexión a la base de datos)
  • propel.ini (configuración de conexión a la base de datos)
en los archivos anteriores, configuramos la conexion a la base de datos para que Symfony se pueda conectar a ella, recuerde ser muy cuidadoso con los archivos yml, estos archivos se encuentran en la carpeta config del proyecto.

Otra cosa que recomiendo es cambiar el nombre del archivo .htaccess que se encuentra en la carpeta web por el de htaccess (quitar el punto), y añadir a la carpeta web la carpeta sf que la pueden descargar del siguiente link:


listo, ya con esto podemos revisar que vamos bien, para esto vamos a nuestro navegador, y accedemos al modulo creado de la siguiente manera:

localhost/Proyecto/web/index.php/Modulo

Ahora, después de la configuración de la base de datos, vamos a hacer el mapeo de la base de datos, para esto hay muchas formas de hacerlo, pero aquí explicare la forma de crear el schema.yml a partir de las tablas ya creadas en la base de datos.

Después de tener las tablas creadas en la base de datos, ejecutamos en la carpeta del proyecto:

symfony propel:build-schema

esto creara (modificara) el schema.yml que se encuentra en la carpeta config, este archivo se puede configurar pero recuerde ser muy cuidadoso con los espacios y demás. A partir de este schema, crearemos el modelo (clases de las relaciones), para esto ejecutamos:

symfony propel:build-model

y listo, ya tenemos preparada nuestra conexión y acceso de datos para nuestro proyecto.

Lo siguiente que haremos sera incluir el Extjs, para esto sugiero hacerlo asi como lo he explicado en una entrada anterior (Integración de Extjs en Symfony) perdón pero estoy muy cansado, apenas tenga tiempo lo termino.

1 comentario:

lperezc2010 dijo...

Hola, mi nombre es LUIS y tengo un proyecto algo grande en symfony 1.4.9 y he decidido personalizar mis vistas usando ExtJS, ya he logrado hacer algunas cosas como mostrar datos en un Grid y Filtrados, la cuestion es que voy muy lento en esto, porque al parecer hay pocas personas que utilizan estos dos Frameworks y me
ha costado mucho trabajo lograr lo poco que he hecho, pero en mi
busqueda he visto tu comentario en Página principal de Grupos de
Google dando muy buena opinion de ExtJS y de que llevas tiempo usandolos a ambos .

Pues una de mis dudas es la siguiente:

Ejemplo: tengo dos tablas persona y pais con una relacion de uno a muchos, cuando las listo en el gridpanel creado con extjs me muestra el ID del pais al que pertenece una persona, no el nombre del pais, como pudiera hacer para que me mostrara el nombre del pais al que pertenece una persona determinada y no el ID, ya que en symfony con los llamados metodos magicos eso se logra muy facil, pero al integrarlo con ExtJS no lo logro hacer....

Mi segunda duda es como guardar datos desde un formulario creado en ExtJS desde symfony....

Por favor necesito ayuda.....si puedes con ejemplos...no se realmente estoy muy atrasado con esto...y cualquier cosa me vendría bien......

espero mantener el contacto con usted para alguna duda que me pueda
surgir.....saludos y muchas gracias de antemano por cualquier ayuda
que me puedas brindar......LUIS