Symfony framework de Desarrollo PHP
Sin duda alguna se ha convertido en uno de los Frameworks de Desarrollo mas usado y popular que hay, quizá no sea el mejor pero si uno de los que mas documentación en español tiene, symfony provee una arquitectura, componentes y herramientas para los desarrolladores que permiten construir complejas aplicaciones web mas rapidamente.
Symfony sigue el paradigma MVC ( modelo-vista-controlador ), el cuál es un patrón de arquitectura muy usado en Ingeniería de Software. Personalmente en principio tuve ciertas dificultades con symfony que se fueron resolviendo a medida que leia la documentación e información al respecto, recomiendo antes de comenzar a desarrollar, leer muy bien como funciona symfony internamente esto les ahorrará horas de trabajo, los libros que usé son Symfony The Definitive Guide y Jobeet.
pasos para tener tu aplicación en unos pocos minutos:
====> Creación del proyecto
En caso de usar wamp, y symfony 1.2.7
Creamos una carpeta llamada miproyecto dentro de www, y a su vez dentro de esta creamos una carpeta lib y dentro de lib una llamada vendor ya aqui descomprimimos la versión de symfony que hayamos descargado y colo camos su contenido en una carpeta llamada symfony. el directorio queda –> miproyecto/lib/vendor/symfony
-
Configurando
Aseguremonos que todo este ok
los argumentos después de app se escriben por motivos de seguridades para evitar ataques a nuestra aplicación por ejemplo
c:\> php lib/vendor/symfony/data/bin/check_configuration.php
Generemos el proyecto al realizar esta acción se genera el árbol de directorios
c:\> php lib/vendor/symfony/data/bin/symfony generate:project nombre_mi_proyecto
Generamos la aplicación de esta forma se crea el árbol de directorios donde almacenaremos
las plantillas generales, y el mvc de la aplicación.
c:\> php symfony generate:app –escaping-strategy=on –csrf-secret=UniqueSecret frontendEn el archivo ProjectConfiguration.class.php agregar esta linea que hace portable nuestro proyecto
agregando una ruta relativa a la clase de incialización.
require_once dirname(__FILE__).’/../lib/vendor/symfony/lib/autoload/sfCoreAutoload.class.php’;Configuración en el servidor apache para el proyecto
# Esta es la configuración para mi_proyecto
<VirtualHost 127.0.0.1:80>
ServerName miproyecto.com
DocumentRoot «C:\wamp\www\miproyecto\web»
DirectoryIndex index.php
<Directory «C:\wamp\www\miproyecto\web»>
AllowOverride All
Allow from All
</Directory>
Alias /sf «C:\wamp\www\miproyecto\lib\vendor\symfony\data\web\sf»
<Directory «C:\wamp\www\miproyecto\lib\vendor\symfony\data\web\sf»>
AllowOverride All
Allow from All
</Directory>
</VirtualHost>Listo ya podrás acceder a tu aplicación desde un browser con la siguiente dirección
http://miproyecto.com -
Definiendo la Base de Datos
Dentro de la carpeta config se encuentran los archivos de configuración de symfony abriremos schema.yml, el cuál lo podemos personalizar a nuestro gusto o podemos generarlo a partir de una base ya existente.
El contenido de este archivo es como el siguiente:propel:
_attributes: { noXsd: false, defaultIdMethod: none, package: lib.model }tabla_pais:
_attributes: { phpName: Pais, idMethod: native }
id: ~
nombre: { type: varchar(30), required: true }
usuario: { type: varchar(10), required: true }
created_at: ~
updated_at: ~tabla_sucursal:
_attributes: { phpName:Sucursal, idMethod: native }
id: ~
nombre: { type: varchar(30), required: true }
pais_id: { type: integer, foreignTable: tabla_pais, foreignReference: id, required: true }
usuario: { type: varchar(10), required: true }
created_at: ~Este ejemplo es de un archivo yml que tiene una sintaxis muy especial, deben escribirlo con las debidas identaciones sino tendrán problemas, symfony entiende por default palabras como id, created_at, updated_at, etc … y los personaliza automáticamente, el phpName es el nombre que queremos que tenga nuestra clase una vez generado todo.
Configurando la base de datos, con esta sentencia queda configurado el archivo databases.yml que se encuentra en la carpeta config.
c:> php symfony configure:database «mysql:host=localhost;dbname=nombre_base» root ConTraSenA
Generando el archivo sql que se guardara en data/sql con las sentencias sql optimizadas
c:> php symfony propel:build-sql
Insertando las tablas en la base
c:> php symfony propel:insert-sql –no-confirmation -
MVC de la app
Generamos el modelo, los controladores, los formularios
c:> php symfony propel:build-all
Generamos los modulos de la aplicación uno a uno, es aqui donde se realizan las operaciones fundamentales sobre las tablas
c:> php symfony propel:generate-module –with-show –non-verbose-templates frontend nombre_para_modulo nombre_tabla
Reemplazar luego los metodos _toString en las clases principales y vacias de cada modulo.
Basicámente hemos creado la estructura de la aplicación lo que resta es modificar el archivo miaplicacion/apps/frontend/templates/layout.php para definir el estilo para todas las ventanas ydemas configuraciones necesarias.