Introducción Con symfony la creación de páginas para la inserción y recuperación de datos de la base de datos está automatizada si no queremos algo muy concreto.
Esta funcionalidad es conocida como 'scaffolding', que es la creación de las acciones básicas en cualquier aplicación dinámica.

El tiempo estimado para completar todos los pasos es de unos 15-20'.

Pasos
Puesta en marcha Una vez instalado symfony, crearemos el entorno para nuestra aplicación:
$ mkdir /var/www/html/howto $ cd /var/www/html/howto $ symfony init-project howto

Se habrá creado una estructura de directorios como la siguiente: apps/ batch/ cache/ config/ data/ doc/ lib/ log/ test/ web/ Con esto habremos creado lo necesario para nuestro proyecto, que podrá contener varias aplicaciones.

Una aplicación sería el frontend. La creamos:
$ symfony init-app frontend Ahora, dentro de apps/ tendremos:
apps/ _ _ frontend/ _ _ _ config/ _ _ _ i18n/ _ _ _ lib/ _ _ _ modules/ _ _ _ templates/ Lo que queda antes de ponernos a desarrollar la aplicación es configurar el servidor Apache para que soporte nuestra aplicación: <directory "/$data_dir/symfony/web/sf"> AllowOverride All Allow from All </directory> <virtualhost *:80> ServerName sftest.devserv DocumentRoot '/var/www/html/howto/web' DirectoryIndex index.php Alias /howto '/$data_dir/symfony/web/sf' <directory '/var/www/html/howto/web'> AllowOverride All Allow from All </directory> </virtualhost> $data_dir sería donde está instalado symfony (p.e.: /usr/share/pear/symfony). Nota: será necesario tener activo mod_rewrite en Apache para el correcto funcionamiento.

Podemos probar que todo funciona accediendo a http://sftest.devserv/index.php/ o http://sftest.devserv/howto_dev.php/ para ver la versión de debug. Hasta aquí el setup del entorno. Pasemos a ver como efectuar las operaciones básicas.

Creación del modelo de datos Definiremos en howto/config/schema.xml el modelo de nuestra base de datos. Pongamos como ejemplo que queremos crear una tabla que contendrá los pasos de este howto, que se componen de nombre y contenido. Añadiremos también un id. <?xml version="1.0" encoding="UTF-8"?> <database name="propel" defaultIdMethod="native" noxsd="true"> <table name="howto_step" phpName="Step"> <column name="id" type="integer" required="true" primaryKey="true" autoIncrement="true" /> <column name="name" type="varchar" size="100" /> <index name="name_index"> <index -column name="name"/> </index> <column name="content" type="longvarchar" /> </table> </database>

Una vez tenemos el modelo definido, procedemos a crear los objetos PHP que lo representarán y las acciones básicas: crear, actualizar, listar y eliminar.

Desde la raíz del proyecto (/var/www/html/howto) $ symfony propel-build-model Al ejecutar este comando obtendremos en howto/lib/model/om los ficheros PHP que representan a nuestro objeto Step con el prefijo 'Base' que no debemos modificar ya que harán la función de plantilla. Los que nosotros utilizaremos se encuentran en howto/lib/model

Para configurar el acceso a la base de datos crearemos/modificaremos el fichero howto/config/databases.yml

El contenido que deberá tener es:

all:
  propel:
    class:          sfPropelDatabase
    param:
      dsn:          mysql://root:@localhost/howto

Ya podemos crear el fichero schema.sql de nuestra base de datos e insertarlo: $ symfony propel-build-sql $ mysqladmin -u root -p create howto $ mysql -u root howto < data/sql/schema.sql

Llegados a este punto ya sólo nos falta ejecutar un comando para tener listas las páginas para añadir, listar, editar y eliminar elementos de nuestra base de datos: $ symfony propel-generate-crud howto step Step

Expliquemos el comando ejecutado: howto corresponde al nombre de nuestro proyecto step al nombre del módulo que se creará * Step es el nombre que le hemos dado en el fichero schema.xml al objeto PHP que representará la tabla howto_step.

Si accedemos a http://sftest.devserv/index.php/step veremos una página donde se listarían los steps que tuviésemos en la base de datos, además de un simple menú para acceder al formulario para añadir steps a la base de datos.

*Extendiendo las bases * Una vez ya tenemos las bases para gestionar los objetos que tenemos en la base de datos, si queremos añadir modelos o acciones los añadiremos a los directorios correspondientes. En el caso de las acciones deberemos crearlas haciendo que éstas extiendan de la clase sfAction que nos proporciona symfony. Es importante seguir las convenciones de nomenclatura, ya que es una de las bases de la automatización en que se basa symfony.

Conclusiones Con estos puede que largos, pero sencillos pasos, tenemos una pequeña aplicación que nos permite manejar elementos almacenados en una base de datos, teniendo en cuenta que no hemos escrito más que un fichero XML y otro YAML (.yml), sin programar nada en PHP.

Cabe destacar también que en este documento sólo se han presentado lo más básico de symfony, por ejemplo, no se ha descrito la creación de layouts o templates, la validación de formularios, etcétera, que symfony implementa desde la base.

Para profundizar en el funcionamiento de symfony está disponible el libro de symfony en versión HTML y PDF para la descarga.

Tagged as ... No tags found!

If you liked this post, you can donate using Bitcoin 12jVrWkk5S6x5hEizThZwgTx59KxaDdK4C