Aspectos para la creación de módulos de gestión con Symfony 1.4.10 y Doctrine 1.2

October 15, 2017 | Autor: F. Romero Rodriguez | Categoría: Web, Application, Doctrine, Symfony
Share Embed


Descripción

Serie Científica de la Universidad de las Ciencias Informáticas http://publicaciones.uci.cu/index.php/SC| [email protected] No. 4, Vol. 5, Año: 2012 ISSN: | RNPS:

Tipo de artículo: Artículo original Temática: Programación web Recibido: 11/02/2012 | Aceptado: 02/04/2012 | Publicado: 13/04/2012

Aspectos para la creación de módulos de gestión con Symfony 1.4.10 y Doctrine 1.2 Aspects for the creation of management modules with Symfony 1.4.10 and Doctrine 1.2 Felix Ivan Romero Rodríguez 1*, Osmany Torres Leyva 2 1*

UCI. Geysed. Centro de Geoinformática y Señales Digitales. Facultad 6. Universidad de las Ciencias Informáticas.

Carretera a San Antonio de los Baños, km 2 1⁄2, Torrens, Boyeros, La Habana, CP. 19370. 2

ISCP Capitán San Luis. MININT. [email protected]

*Autor para la correspondencia: [email protected]

Resumen En la actualidad el uso de las aplicaciones web ha crecido grandemente. Junto con este se ha incrementado la creación de las mismas a través de frameworks de desarrollo. Existen varios frameworks que son usados para la creación de este tipo de aplicaciones, Symfony es uno de los más populares en este campo gracias a las facilidades que posee. Symfony posee herramientas que facilitan la creación de módulos de gestión para el manejo de datos. El objetivo de este trabajo se asienta en la recolección de prácticas para la creación de módulos de gestión usando Symfony 1.4.6. Entre las herramientas que maneja Symfony se destaca la creación de formularios a partir de datos persistentes y la validación de datos y registros. Palabras clave: Symfony, web, doctrine, aplicación Abstract Current days, work with web Application has increased greatly. Also using development frameworks has become a good technique nowadays. There are several frameworks that are used to create this kind of application. Symfony is

1

Serie Científica de la Universidad de las Ciencias Informáticas http://publicaciones.uci.cu/index.php/SC| [email protected] No. 4, Vol. 5, Año: 2012 ISSN: | RNPS:

one of the most popular in this branch, due to the facilities it has. Symfony has tool that makes easier the creation of management modules for managing data. The study aims to a basic creation of a management module using Symfony 1.4.6 framework. Among the tools that Symfony handles is the creation of forms from persistent data and the validation data and records. Keywords: Symfony, web, doctrine, application

Introduction Una aplicación web o webapp (del inglés, web Application) es una aplicación a la que se accede mediante un navegador web a través de una red como Internet. Es una aplicación de software de computadora que se codifica en un navegador apoyado en lenguajes (tales como HTML, JavaScript, CSS, PHP, Java, etc.) y dependen de un navegador web (como Internet Explorer, Mozilla, Netscape) para hacer que la aplicación sea ejecutable. (Villar, 2008) Entre las ventajas que se pueden encontrar en el uso de una aplicación web se encuentran:  Solamente con una conexión a la red se pueden disponer de sus funcionalidades.  Permite el desarrollo de aplicaciones multi-usuario bajo el concepto de compartición de información debido a que se accede a través de Internet.  Reduce las especificaciones de hardware para los clientes.  Gana popularidad al tener una gran capacidad para actualizarse y distribuirse en miles de equipos clientes. Las aplicaciones web permiten la generación automática de contenido, la creación de páginas personalizadas según el perfil del usuario o el desarrollo del comercio electrónico. Además, una aplicación web permite interactuar con los sistemas informáticos de gestión de una empresa, como puede ser gestión de clientes, contabilidad o inventario, a través de una página web. (Luján, 2002) Las aplicaciones web constituyen programas que basan su funcionamiento en la comunicación a través del protocolo HTTP, cuya finalidad es hacer recepcionar al usuario la información vía HTML. Estas pueden ser accedidas a través de un navegador web y residen en servidores web.

Desarrollo ¿Qué es Symfony? Symfony es un framework para construir aplicaciones web con PHP. Un framework es una estructura conceptual y tecnológica de soporte definida, normalmente con artefactos o módulos de software concretos, en base a la cual otro

2

Serie Científica de la Universidad de las Ciencias Informáticas http://publicaciones.uci.cu/index.php/SC| [email protected] No. 4, Vol. 5, Año: 2012 ISSN: | RNPS:

proyecto de software puede ser organizado y desarrollado. Típicamente, puede incluir soporte de programas, bibliotecas y un lenguaje interpretado entre otros programas para ayudar a desarrollar y unir los diferentes componentes de un proyecto. (Ecured, 2011) En otras palabras, es un enorme conjunto de herramientas y utilidades que simplifican el desarrollo de las aplicaciones web. Emplea el tradicional patrón arquitectónico MVC (modelovista-controlador) para separar las distintas partes que forman una aplicación web. Además constituye una poderosa herramienta que facilita el trabajo para la construcción de aplicaciones web. También al emplear MVC favorece a un mantenimiento más para los desarrolladores. El uso de frameworks para la construcción de aplicaciones se ha convertido en una práctica común, debido a las facilidades que estos brindan, mejorando el rendimiento de dichas aplicaciones, agilizando la construcción y mantenimiento. Este framework al usar MVC crea una arquitectura que separa la lógica de negocio (el modelo) y la presentación (la vista) por lo que se consigue un mantenimiento más sencillo de las aplicaciones. El controlador se encarga de aislar al modelo y a la vista de los detalles del protocolo utilizado para las peticiones (HTTP, consola de comandos, correo electrónico, etc.). El modelo se encarga de la abstracción de la lógica relacionada con los datos, haciendo que la vista y las acciones sean independientes del tipo de gestor de bases de datos utilizado por la aplicación. Symfony realiza su propia implementación del MVC, para ello toma lo mejor de esta arquitectura logrando que el desarrollo de las aplicaciones sea más rápido y sencillo. (Potencier, Zaninotto, 2007)

¿Qué es doctrine? Doctrine es un ORM1 para php5. Además de todas las ventajas que conlleva un ORM, uno de sus puntos fuertes es su lenguaje DQL (Doctrine Query Language) inspirado en el HQL de Hibernate. Entre muchas otras cosas posee la posibilidad de exportar una base de datos existente a sus clases correspondientes y también a la inversa, es decir convertir clases (convenientemente creadas siguiendo las pautas del ORM a tablas de una base de datos. Con el uso de doctrine el control de datos podrá ser efectuado de manera fácil, permitiendo trasformar el uso de consultas a bases de datos a un lenguaje sencillo. (Guardado, 2010)

1 Un ORM o (Object Relation Mapper) es una técnica de programación que permite convertir datos entre el sistema de tipos utilizado en un lenguaje de programación orientado a objetos y el utilizado en una base de datos relacional, es decir, las tablas de la base de datos pasan a ser clases y los registros se pueden manejar con facilidad.

3

Serie Científica de la Universidad de las Ciencias Informáticas http://publicaciones.uci.cu/index.php/SC| [email protected] No. 4, Vol. 5, Año: 2012 ISSN: | RNPS:

El uso de ORM, como doctrine, permite una rapidez en el desarrollo de aplicaciones, a partir del mismo se puede crear una abstracción de los datos permitiendo la independencia del sistema de base de datos en cuestión. Cuando se trabaja con ORM, es necesario crear el conjunto de clases que representa el modelo de la aplicación, luego estas clases serán vinculadas al esquema de la base de datos de forma automática con un motor ORM. Aunque son cosas diferentes, cuando se diseña un modelo relacional y un modelo de clases, suelen ser muy parecidos. Doctrine se aprovecha de esta similitud y permite generar de forma automática el modelo de clases basándose en el modelo relacional de tablas. Es decir, si se tiene una tabla llamada usuarios, se autogenerará una clase llamada Usuarios cuyas propiedades son las columnas de dicha tabla. (Mata, 2009) Doctrine contiene una colección de clases que permiten una fácil interacción con los datos. Mediante el uso de las mismas se puede acceder a la información contenida en las bases de datos así como el manejo de sus datos. Para un sistema de gestión de datos existen clases de suma importancia que contienen estas características, entre ellas se encuentran: Doctrine_Record: Representa una entidad con sus propiedades (columnas) y

facilita métodos para insertar,

actualizar o eliminar registros entre otros. $seccion = new Seccion(); $seccion->nombre=”Efemérides”; $seccion->save();

Doctrine_Table: Representa el esquema de una tabla. Esta clase permite obtener información sobre las columnas u obtener datos sobre registros específicos. $userTable = Doctrine_Core::getTable('Usuarios'); $user = $userTable->find(1); Doctrine_Collection: Esta clase representa los resultados de las consultas, en la misma se depositan las colecciones de datos de tabla que se obtienen al ejecutarse consultas de selección.

$snmod = NoticiaTable::getInstance()->getLastRecord(); echo $snmod[0]->titulo;

4

Serie Científica de la Universidad de las Ciencias Informáticas http://publicaciones.uci.cu/index.php/SC| [email protected] No. 4, Vol. 5, Año: 2012 ISSN: | RNPS:

Buscadores mágicos (Magic finders) En Doctrine, es posible buscar registros basándose en cualquier campo de una tabla. Así como existe el método find() para buscar un determinado identificador(id) en una tabla, se podría hacer findByX() en donde X es el nombre de la columna. Si existen los campos llamados name y email, se puede hacer findByName() y findByEmail(). También es importante decir que existe el método findAll(), que obtiene todos los registros de la tabla.

Relaciones entre entidades En Doctrine, una vez que se define el modelo (o se ha creado de forma automática) con las tablas y sus relaciones, resulta fácil acceder y moverse por entidades relacionadas. Los formularios son instanciados en las acciones de los módulos preferiblemente, y sus campos son mostrados a través de los partials que se incluyen en la vista. Los partials constituyen fragmentos de código que se pueden utilizar dentro de la plantilla, son muy usados para reutilizar código.

Filtros Los filtros constituyen mecanismos para reducir resultados de una consulta con una inmensa cantidad de registros. Estos facilitan una cómoda vista a registros específicos. Symfony posee un mecanismo para implementar los filtros, pero los trata de una manera muy generalizada. El trabajo con filtros comienza después de tener generados los módulos de gestión que aplica Symfony sobre el modelo a través del ORM que tiene asociado. Para ello se ejecutan los siguientes comandos. Symfony doctrine: generate module: aplicación nombre del módulo modelo (tabla de la base datos) symfony doctrine: build-filters symfony doctrine: build-forms hecho este paso se está listo para mostrar los filtros y proceder a su configuración. Los filtros, son a la vez formularios, que se trabajan de manera similar, por lo que igual se instancian en las acciones de los módulos y se visualizan en las vistas. / apps/frontend/modules/noticia/actions/actions.class.php

7

Serie Científica de la Universidad de las Ciencias Informáticas http://publicaciones.uci.cu/index.php/SC| [email protected] No. 4, Vol. 5, Año: 2012 ISSN: | RNPS:

Luego se muestra el filtro en la vista // apps/frontend/modules/noticia/templates/indexSuccess.php

Como se puede observar, en el formulario, el action está llamando a la acción que ejecuta el filtro, en este caso 'noticia/filter'. Esta acción es la que va ejecutar el filtrado de las consultas. La misma queda definida de la siguiente manera //apps/frontend/modules/noticia/actions/actions.class.php Hasta este momento, se tiene los filtros mostrados, los cuales trabajan sobre todos los campos de la base de datos. Adaptar estos filtros consistiría, por ejemplo, en filtrar solamente por campos específicos. Para ello es necesario especificar fuera del filtrado los campos innecesarios. Esto se hace accediendo a la clase correspondiente del modelo en el filtro. Se accede a la función configure, la cual especifica cuáles son los campos del filtro que se van a habilitar. El primer bloque define los componentes que se van a establecer y su configuración. El segundo bloque especifica cómo se van a validar dichos campos. Luego se establece el esquema y se especifican los campos que se excluyen los filtros. En algunos casos existen filtros que usan campos de fechas, lo que conlleva a posibles conflictos, para ello es necesario parametrizar los campos de las fechas para que puedan ser validados, se realiza sobre la acción executeFilter. Esta operación puede desarrollarse de varias maneras: Parametrizando de manera normal Parametrizando usando propiedades de Symfony y Doctrine:

Validadores La validación es la constatación, mediante pruebas, de que algo es adecuado o idóneo. Symfony presenta un mecanismo de validación que agrupa validadores según su tipo. Entre los validadores más comunes que presenta Symfony para validar sus datos existen varios tipos, los pre-validadores, los post-validadores y los validadores lógicos. Un pre-validador es aquel que valida los datos con respecto a su formato si puede estar vacío, si lleva caracteres en blanco, si es número, si es requerido, etc. Un post-validador es el encargado de comparar los datos introducidos en el formulario con los registros existentes en la base de datos. Además es usado también para comprobar fechas entre otros aspectos.

10

Serie Científica de la Universidad de las Ciencias Informáticas http://publicaciones.uci.cu/index.php/SC| [email protected] No. 4, Vol. 5, Año: 2012 ISSN: | RNPS:

SfValidatorString Este validador se utiliza para validar campos de texto donde se comprueba si la cantidad de caracteres permitida debería dejarse en blanco. $this->setValidators(array( 'nombre'

=> new sfValidatorString(array('required' => true, 'min_length'=>3,'max_length'=>30), array('required' => 'Requerido.', 'min_length'=> '"%value%" es demasiado corto (%min_length% caracteres mínimo).', 'max_length' => '(%max_length% caracteres máximo).' )),

));

De esta manera se especifica que el campo no puede quedar vacío y se limita la cantidad de caracteres. Los mensajes de error de los validadores pueden ser modificados según se requiera. SfValidatorEmail El siguiente validador es usado para comprobar los campos de correo, de manera que valide si los mismos están correctamente confeccionados. $this->setValidators(array( 'email_address'

=> new sfValidatorEmail(array(),array('required'=>'Requerido','invalid'=>'Inválido')),

)); Al igual que el sfValidatorString, los mensajes pueden ser personalizables. SfValidatorDoctrineChoice Este validador permite comprobar los elementos de listas desplegables, listas múltiples, las cuales están relacionadas a una colección de datos. $this->setValidators(array( 'audio_id'

=> new sfValidatorDoctrineChoice(array('model' => $this->getRelatedModelName('Audio'),

'required' => true), array('required' => 'Requerido.')),

11

Serie Científica de la Universidad de las Ciencias Informáticas http://publicaciones.uci.cu/index.php/SC| [email protected] No. 4, Vol. 5, Año: 2012 ISSN: | RNPS:

)); Como se observa en el ejemplo, el componente está relacionado con una columna de una relación de la cual obtiene los datos. SfValidatorChoice Semejante al SfValidatorDoctrineChoice, pero en este caso sus opciones son manejadas a través de una colección de datos que se incorporan manualmente. $this->setValidators(array( 'disponible'

=> new sfValidatorChoice(array('required' => false, 'choices' => array('', 1, 0))),

));

sfValidatorRegex Existen ocasiones en que las validaciones que se desea sobre un campo de texto no son lo suficientemente exquisitas, ya que se requiere usar determinado patrón sobre las cadenas de texto entradas. Y ello se logra validando con expresiones regulares, para ello es usado el sfValidatorRegex.

$this->setValidators(array( 'disponible'

=>

new

sfValidatorRegex(array('pattern'

=>'{^([A-Za-z

|áéíóúAÉÍÓÚÑñ]+)$}'),array('invalid'=>'Inválido')) ));

sfValidatorDateTime Usado para validar los datos que se refieren a fechas $this->setValidators(array( 'fecha_inicio'

=> new sfValidatorDateTime(array('required' => true),array('required'=>'Requerido')),

));

12

Serie Científica de la Universidad de las Ciencias Informáticas http://publicaciones.uci.cu/index.php/SC| [email protected] No. 4, Vol. 5, Año: 2012 ISSN: | RNPS:

Validadores lógicos: sfValidatorAnd Este validador agrupa dentro de sí varios validadores, teniendo en cuenta que deben cumplirse todas las validaciones que el mismo incluye, ya que funciona como un AND lógico. $this->setValidators(array( 'first_name'

=> new sfValidatorAnd(array(new sfValidatorString(array('required'=>true,'max_length' =>

255,'min_length' => 5),array('min_length'=>'%value% es muy corto, %min_length% min','max_length'=>'%value% es

muy

largo,

%max_length%

max')),

new

sfValidatorRegex(array('pattern'

=>'{^([A-Za-z

|áéíóúAÉÍÓÚÑñ]+)$}'),array('invalid'=>'Inválido')),),array(),array('required'=>'Requerido')), )); sfValidatorOr Similar al anterior, sólo que en este caso permite que al menos se cumpla una condición. $this->setValidators(array( 'first_name'

=> new sfValidatorOr(array(new sfValidatorString(array('required'=>true,'max_length' =>

255,'min_length' => 5),array('min_length'=>'%value% es muy corto, %min_length% min','max_length'=>'%value% es

muy

largo,

%max_length%

max')),

new

sfValidatorRegex(array('pattern'

=>'{^([A-Za-z

|áéíóúAÉÍÓÚÑñ]+)$}'),array('invalid'=>'Inválido')),),array(),array('required'=>'Requerido')), )); Post-validadores sfValidatorDoctrineUnique Este post-validador se encarga de que el valor del campo no esté repetido en la base de datos, ya que su principal función es comprobar la unicidad del registro. $this->validatorSchema->setPostValidator( new

sfValidatorDoctrineUnique(array('model'

=>

'AudioAutor',

'column'

=>

array('nombre')),array('invalid'=>'Ya existe un autor con ese nombre')), );

13

Serie Científica de la Universidad de las Ciencias Informáticas http://publicaciones.uci.cu/index.php/SC| [email protected] No. 4, Vol. 5, Año: 2012 ISSN: | RNPS:

sfValidatorSchemaCompare Este post-validador permite crear comparaciones entre los campos, de manera que valide diferencias entre los mismos, entre otras consideraciones. $this->validatorSchema->setPostValidator( new sfValidatorSchemaCompare('fecha_inicio',sfValidatorSchemaCompare::LESS_THAN,'fecha_fin', array('throw_global_error' => true ), array('invalid' => 'La hora de fin ("%right_field%") debe ser mayor que la hora de inicio ("%left_field%")') ); sfValidatorCallback Este validador permite definir a través de una función cómo validar un campo específico sin tener que crear un validador específico para el campo. Permite hacer una depuración más certera de los datos. (Podroskey, 2009) $this->validatorSchema['some_text_field'] = new sfValidatorCallback( array('callback'=> array($this->getObject(), 'someTextFieldValidatorHook') ) );

'someTextFieldValidatorHook', responde a la función que valida los datos.

Conclusiones Mediante la gestión de los datos de una base de datos se pueden crear, modificar, visualizar y eliminar registros en las respectivas tablas de la base de datos. Symfony, integrado con Doctrine posee un mecanismo que genera módulos para la gestión de los datos de una base de datos. Aprovechar las potencialidades que presenta este framework, permite un fácil mantenimiento de las aplicaciones web, así como mejorar su rendimiento ante procesos de actualización. Mediante el presente trabajo se muestran pautas, ejemplos para trabajar con módulos para la gestión de datos usando Symfony y Doctrine, estableciendo una base para optimizar aplicaciones web que trabajen sobre dicho

14

Serie Científica de la Universidad de las Ciencias Informáticas http://publicaciones.uci.cu/index.php/SC| [email protected] No. 4, Vol. 5, Año: 2012 ISSN: | RNPS:

framework. Aprovechando del mismo sus funcionalidades para crear formularios, establecer validadores, configurar filtros de manera que se agilice los procesos para la gestión de los datos.

Referencias -

PIO, JOSÉ ANTONIO. Castellón Universitat Jaume I, Domesticando Formularios. [En línea] Universitat Jaume I. 2010. [Consultado el: 12 de febrero de 2012]. Disponible en: http://decharlas.uji.es/symfony 79 p.

-

EcuRed. Framework. [En línea]. http://www.ecured.cu/index.php/Framework. [Accedido el: 22-marzo-2012].

-

GUARDADO IVÁN. Utilizando Doctrine cómo ORM en PHP. [En Línea]. Ontuts. 2010. [Consultado el: 12 de febrero de 2012]. Disponible en: http://web.ontuts.com/tutoriales/utilizando-doctrine-como-orm-en-

php/. 1 p. -

PODROSKEY JIM. Using SfValidatorCallback. [En línea] Phoenix Business Technologies Group. 2009. Disponible en: http://pbtg.com/blogs/jim/2009/07/16/symfony-tutorials-using-sfvalidatorcallback 1p.

-

LUJÁN MORA SERGIO. Programación de aplicaciones web: historia, principios básicos y clientes web. Editorial Club Universitario, Universidad de Alicante, 2002. ISBN 8484542068, 9788484542063. 321p.

-

MATA, MANUEL. ¿Qué es Doctrine ORM? [En línea] TecnoRetales. 2009. [Consultado el: 12 de febrero de 2012]. Disponible en: http://www.tecnoretales.com/programacion/que-es-doctrine-orm/. 1p

-

POTENCIER FABIEN, ZANINOTTO FRANÇOIS. Symfony, la guía definitiva, 2007, 588 p.

-

VILLAR MATOS HEIKEL, Implementación de los subsistemas de Administración y Transmisión de la Plataforma de Televisión Informativa PRIMICIA. UCI, La Habana, 2008.

15

Lihat lebih banyak...

Comentarios

Copyright © 2017 DATOSPDF Inc.