Centralización de constantes para Symfony2 y Twig

A la hora de trabajar con proyectos grandes nos encontramos generalmente con la necesidad de usar ciertos códigos o IDs (PKs) en duro dentro de la lógica de la programación. El caso que posiblemente sea el más usado, es cuando intentamos validar ciertas acciones dependiendo de los estados de los objetos.

Supongamos un caso sencillo como por ejemplo la lista de usuarios del sistema, en donde necesitamos agregar un botón para activarlos o inactivarlos de acuerdo a esta pequeña lógica:

  • Si el usuario se encuentra “activo”, el botón debería ser rojo con un texto “Inactivar Usuario”
  • Si el usuario se encuentra “inactivo”, el botón debería ser normal con un texto “Activar Usuario”

Esto por lo general se traduce en un código de lógica de presentación de una manera parecida a la siguiente, tomando en cuenta que el ejemplo se encuentra dentro de una layout de Symfony2 con twig y Twitter Bootstrap:


{% if usuario.estado == 'A' %}
    <button type="button" class="btn btn-danger">Inactivar Usuario</button>
{% elseif usuario.estado == 'I' %}
    <button type="button" class="btn">Activar Usuario</button>
{% endif %}

Continúa leyendo Centralización de constantes para Symfony2 y Twig

Parametrizando nuestro sistema con symfony 2/2

Continúo con lo prometido de seguir con el artículo Parametrizando nuestro sistema con symfony con este segundo artículo sobre esta serie. Aquí veremos como implementar con Symfony unos métodos que nos hagan un poco más sencillo el desarrollo de una aplicación parametrizada.

Habíamos visto en el artículo anterior que podríamos trabajar creando una tabla en la que centralicemos los parámetros de nuestra aplicación según dos puntos importantes.

  1. Cantidad de registros: Si la cantidad de registros es relativamente fija y no crecen tan variablemente como son las tablas transaccionales.
  2. Cantidad de columnas: Si estas tablas tienen exactamente 2 columnas como generalmente serían id y nombre.

De esta manera lograríamos no tener tantas tablas que simplemente las usamos como parámetro y hacer nuestra aplicación mucho mas fácil de mantener.

En éste artículo veremos como manipular los datos de la tabla parámetro de una forma en la que no necesitemos mucha conversación con la base de datos.

Continúa leyendo Parametrizando nuestro sistema con symfony 2/2

Parametrizando nuestro sistema con symfony 1/2

Mucho se habla hoy en día de que un sistema parametrizado es mucho mejor que los famosos “códigos en duro” que los programadores solemos escribir dentro del fuente de los programas. Es muy normal ver gente que usa combos de selección múltiple que en realidad van cargados dentro del mismo HTML de la página. El problema ocurre realmente cuando hacemos esto con varias páginas y luego resulta muy engorroso el mantenimiento del sitio ya que hay que buscar todos los lugares en donde lo hicimos a la hora de agregar, quitar o modificar alguna de las opciones de nuestro combo.

Mucha gente acostumbra crear tablas paramétricas para por ejemplo “estados”, “paises”, “tipos”, etc. Considero, y es una opinión muy personal, que cuando estas tablas son creadas habría que analizar 2 puntos a fin de determinar si las mismas podrían ir dentro de la estructura que voy a proponer con este artículo.

  1. Cantidad de registros: Si la cantidad de registros es relativamente fija y no crecen tan variablemente como son las tablas transaccionales.
  2. Cantidad de columnas: Si éstas tablas tienen exactamente 2 columnas como generalmente serían id y nombre.

Cabe mencionar que creando tablas como las descriptas arriba vemos un crecimiento muy grande en el número de tablas de la base de datos y por supuesto un Diagrama Entidad Relación (DER – ER) muy complejo para graficar ya que la mayoría de las tablas suelen ser de este tipo.

Tomando en cuenta esto, propongo que trabajemos con una tabla a la cual denominaremos “parametro” y con la ayuda de Symfony y los artículos de la serie Personalizando el objeto sfUser de Symfony veremos como centralizar los datos paramétricos dentro de un solo lugar y los almacenaremos dentro de la sesión del usuario activo del sistema.

Continúa leyendo Parametrizando nuestro sistema con symfony 1/2