Deployar proyecto Symfony 1.4 en hosting público

Hay muy poca documentación sobre la instalación de un proyecto Symfony en un hosting público para ponerlo en producción y ya son varias personas que me lo han preguntado así que lo voy a documentar aquí para quién lo este necesitando.

En primer lugar es bueno recordar que de todas las carpetas del proyecto, la única pública debería ser la carpeta web/ ya que cualquier request llegará directamente a los controladores frontales que existen dentro de la misma.

Un hosting por lo general tiene una carpeta que corresponde al usuario y dentro de la misma una carpeta pública que suelen llamarla public_html, web, www, etc. Es aquí donde siempre estamos acostumbrados a cargar nuestros proyectos, lo que sería igual a nuestro localhost por ejemplo la carpeta www del wampserver o la carpeta /var/www.

Supongamos, a los efectos de este manual, que nuestro proyecto se llamará “sftest” y dentro tenemos creada una aplicación con un módulo de prueba.

Continúa leyendo Deployar proyecto Symfony 1.4 en hosting público

Data Hydrators con Symfony 1.4 y Doctrine

Muchas veces busqué alguna buena documentación sobre los Data Hydrators de Doctrine más como ejemplos que simples explicaciones y luego de mucha pelea logré entenderlos bien como para trabajar a gusto con ellos por lo que me gustaría dejarlo por escrito por si pueda serles de utilidad.

Me gustaría empezar con el concepto de que son los Data Hydrators haciendo referencia a la documentación oficial de Doctrine en su sitio web.

Doctrine has a concept of data hydrators for transforming your
Doctrine_Query instances to a set of PHP data for the user to take
advantage of. The most obvious way to hydrate the data is to put it
into your object graph and return models/class instances. Sometimes
though you want to hydrate the data to an array, use no hydration or
return a single scalar value.

Yo lo explicaría diciendo que Doctrine utiliza Data Hydrators para la transformación de los Doctrine_Query que usamos al momento de hacer nuestros DQLs. Es decir, un DQL generado por nosotros nos sirve para generar dinámicamente el SQL necesario para ejecutarlo contra la base de datos y nos devuelve de alguna manera información de la base de datos que por lo general lo hubiésemos denominado un ResultSet. Estos datos devueltos vienen en un formato que Doctrine maneja y los Data Hydrators nos permiten decirle que nos devuelva de cierta manera que podamos manipularlos más fácilmente. A este proceso de transformación se le denomina “hidratar los datos” y nos sirve para manipularlos como objetos, arrays o como un valor único a lo que se le denomina valor escalar.

Continúa leyendo Data Hydrators con Symfony 1.4 y Doctrine

Symfony 1.4, jQuery y Ajax

Habiendo dejado mucho tiempo de escribir artículos sobre Symfony me gustaría hablarles hoy sobre la utilización de Ajax con jQuery dentro de nuestro Framework PHP. Antes de leer este artículo recomiendo la lectura de los artículos de la serie de jQuery y Ajax en donde se explica como generar de una manera muy sencilla peticiones asíncronas al servidor utilizando la librería JavaScript jQuery. En estos artículos verán el concepto erróneo que muchas veces tenemos sobre Ajax y entenderán la idea sobre Hijax.

Symfony en sus versiones anteriores contaba con helpers interesantes para la creación de links y formularios utilizando Ajax mediante prototype. Así como existe hoy en día el helper para link_to() existía un link_to_remote() que era capaz de crear el código JavaScript necesario para la llamada Ajax. Con el tiempo, en las versiones más maduras del framework esto fue eliminado y se creó un plugin que utiliza jQuery llamado sfJqueryReloadedPlugin que continúa con las funciones más utilizadas. El enlace al plugin lo pueden encontrar aquí donde podrán ver la documentación necesaria.

La idea de este artículo NO es sobre la utilización del plugin sino sobre cómo ejecutar las llamadas Ajax directamente desde cero para entender la idea y poder hacer lo que necesitemos sin depender del plugin.

Como veíamos en los artículos de la serie sobre jQuery y Ajax, repetimos varias veces que la llamada asíncrona es simplemente un request al servidor y que cualquier cosa que escribamos en la salida estándar de la página procesadora es devuelto como response al cliente. La misma idea la manejaremos aquí ya que nada en absoluto cambia.

Continúa leyendo Symfony 1.4, jQuery y Ajax

Métodos GET vs POST del HTTP

Entendiendo el concepto de GET y POST

Muchas veces tenemos una idea equivocada sobre la utilización de GET y POST. Tendemos a entender que cuando doy click a un link eso es GET y cuando envío un formulario es POST. Mucho peor, solemos pensar que enviando peticiones POST los datos viajan seguros por no ir como parte de la URL como lo hace GET. Hay un error en este concepto que considero que cuando empezamos a aprender a usar tecnologías Web como por ejemplo PHP es entendible pero que a medida que vamos madurando debemos darnos cuenta que GET y POST no son la diferencia entre links y formularios.

Se suele prestar a confusión ya que tanto GET como POST son métodos del protocolo HTTP el cual esta compuesto por un envío al servidor conocido como petición (request) y una respuesta a dicha solicitud (response).

Protocolo HTTP

Tanto GET como POST, justamente por ser métodos ambos de HTTP, ejecutan un request y response, y a mi criterio esto suele ser parte de la confusión sobre los objetivos reales de ambos métodos.

Continúa leyendo Métodos GET vs POST del HTTP

Modificando el double list del sfFormExtraPlugin de Symfony

Explicación del sfFormExtraPlugin

Hola a todos nuevamente. Este será el último artículo para este año y esperemos iniciar el 2011 con nuevas idea.

Estuve un buen tiempo ya probando los plugins de Symfony que dicho sea de paso son fantásticos. El que me llamo mucho la atención por su gran utilidad y sencillez fue el sfFormExtraPlugin que agrega unos widgets con jQuery muy útiles. Del widget que me gustaría hablar hoy es el de double list que permite generar dos combos a fin de ir pasando los datos de uno al otro.

Double list - sfFormExtraPlugin

Con solo un poco de configuración como lo podemos ver aquí, se puede llegar a generar esto de una forma muy rápida.

Continúa leyendo Modificando el double list del sfFormExtraPlugin de Symfony