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

Servicios REST usando Silex micro-framework 3/3 – Cliente

Ya hace un tiempo que escribí el primer y segundo artículo de esta serie sobre Servicios REST y Silex. En esa época había creado un repositorio en mi cuenta de GitHub para almacenar un ejemplo de como crear un servidor REST utilizando Silex el micro-framework PHP que sería como el hermano menor de Symfony.

Utilizo Silex porque es realmente fácil crear rápidamente un proyecto de ejemplo pero en realidad de expone la idea para utilizarlo con PHP, pudiéndose adaptar rápidamente el ejemplo a algún otro framework como Symfony2 o incluso hacerlo desde cero con PHP.

Con ayuda de algunas personas, a quienes agradezco por los comentarios que dejaron en los artículos, he realizado algunas modificaciones y creo que nos ha quedado un proyecto base interesante para tenerlo como estructura base.

Hay que tener en cuenta que hoy en día la nueva versión de Silex ha
cambiado un poco en cuento a su instalación con relación al último
artículo. Utilizaremos para este artículo la nueva versión y con el
tiempo haremos las modificaciones en el ejemplo del servidor.

Hoy quiero hablar sobre como podemos consumir ese servicio creado, es decir, crear un cliente para REST utilizando Silex. Hay que recordar que nuestro servicio REST nos devuelve siempre respuestas por medio de los códigos de estados del protocolo HTTP (puedes verlo en la wiki) y en los casos que tiene que devolvernos datos como sería la ruta /ver-comentarios.json, lo hará utilizando el formato JSON. Esto es importante saber ya que para que nuestro cliente obtenga los comentarios del ejemplo tenemos que saber que obtendremos una respuesta JSON la cual tendremos que procesar para mostrarlo en nuestro cliente.

Continúa leyendo Servicios REST usando Silex micro-framework 3/3 – Cliente

Guía de Symfony2 – Capítulo 11-B – Integrando jQuery

En respuesta al capítulo anterior sobre Ajax hemos preparado unos ejemplos de implementación usando jQuery para el capítulo publicado el día de hoy.

Como les mencionaba en el artículo anterior para utilizar Ajax la programación es JavaScript y para esto lo haremos utilizando jQuery un framework muy potente y sencillo.

En este capítulo se explica como importar el archivo .js que se descarga del sitio oficial de jQuery, utilizaremos un ejemplo ya visto en el capítulo 9 – Manipulando datos con Doctrine en donde mostrábamos un listado de artículos haciendo que dicho listado sea buscado asíncronamente luego de haber renderizado la página por medio de un botón.

Este capítulo será útil para los que necesiten importar cualquier framework JavaScript no solo para implementar Ajax, como por ejemplo ExtJS, tinymce, lightbox, etc.

Continúa leyendo Guía de Symfony2 – Capítulo 11-B – Integrando jQuery

Guía de Symfony2 – Capítulo 11 – Integrando AJAX

Hoy se ha publicado el capítulo 11 de la guía de Symfony2 donde @maycolalvarez explica como Symfony nos provee formas de saber cuando un request fue ejecutado por medio de una llamada asíncrona.

También explica que Symfony2 es un framework PHP por lo que no da soporte para realizar las llamadas Ajax en realidad ya que esto se hace con JavaScript.

Ya existen varios frameworks JavaScript que nos proveen funcionalidad de Ajax como por ejemplo jQuery que hasta el momento es mi favorito y programar en peticiones asíncronas se vuelve realmente fácil.

Continúa leyendo Guía de Symfony2 – Capítulo 11 – Integrando AJAX

Guía de Symfony2 – Capítulo 10 – Validación de datos y creación de formularios

Fue publicado el décimo capítulo de la Guía de Symfony2 en maestros del Web y en este capítulo les hablo sobre uno de los temas que más me ha gustado de Symfony desde que empecé a trabajar con el framework: validación de los datos y la creación de formularios.

Para las validaciones hablaremos sobre los @Asserts, simples anotaciones que realizan validaciones poderosas con poco código y vemos que Symfony2 ya nos provee de la gran mayoría que necesitaremos usar.

Hablando sobre los formularios notaremos la gran diferencia de diseñar los formularios y programar los formularios por medio de clases. Me gusta decir que en Symfony, el concepto de un formulario NO es simplemente introducción de texto sino introducción de texto VÁLIDO para la aplicación, libre de los problemas que hoy se tienen al crear un formulario a mano y tener que recordar pelear con ataques CSRF, XSS, SQL Injection y cambios en caliente con herramientas como Firebug.

El sub-framework de formularios es uno de los que más me hicieron sentir la diferencia entre usar un framework y no hacerlo y todavía hay muchas otras herramientas que nos permite usar como los formularios embebidos por lo que hay bastante para aprender.

Continúa leyendo Guía de Symfony2 – Capítulo 10 – Validación de datos y creación de formularios