Ordenar un array de objectos en Symfony2

Mientras estaba desarrollando un proyecto en Symfony2, tuve la necesidad de agrupar dos Entidades que tenian informacion similar, por ejemplo tenia una Entidad Liquidacion y otra LiquidacionesSA, esta ultima simulaba una Liquidacion pero contenia otra informacion, ambas tenian un mes, un año, un codigo y estaban asociadas a una Entidad padre llamada LiquidacionResumen, el problema fue cuando necesite listar todas las Liquidaciones que tenia LiquidacionResumen en donde debia incluir tanto las Entidades Liquidacion y LiquidacionSA, obviamente debian ir ordenadas por codigo para mostrar una concordancia correlativa entre ellas, por ultimo mencionar que la asociacion entre ellas devolvia un ArrayCollection.

Seguir leyendo…

Ocultar carpeta «web» de la URL en Symfony2

En un post anterior, vimos como quitar el «app.php/app_dev.php» de la URL, pero, que sucede si queremos que nuestras URL se vean aun mas limpias, por ejemplo, si tenemos una URL www.hola.com/web/home/ idealmente lo mejor seria que mostrase solo www.hola.com/home/ cierto? ¡pues claro! a nuestros Usuarios no les parecera muy lindo que se vea «web» en nuestra URL.

Seguir leyendo…

Castear un String a Entero con Doctrine

El problema es el siguiente, teniendo un campo String en donde se guarda un campo numerico se requeria ordenar por este, al ser String se ordenaba de una manera «incorrecta», en cierto modo es correcto pero dado el contenido no era lo esperado por el Usuario. Lo mas logico seria dejar este campo como Entero y listo, pero el problema es que la Base de Datos contiene mucha informacion y la persona que la hizo en su momento lo definio asi, por lo tanto, no nos dejaron cambiarla, asi que asumimos que seria asi.

Y bueno, buscando informacion sobre como castear un string a entero con Doctrine 2 en Symfony 2, no encontre ninguna forma directa ya que por lo visto no existe, la unica forma que logre encontrar es creando una funcion personalizada.

Seguir Leyendo…

knp_paginator con consulta SQL personalizada (createNativeQuery)

El Bundle KnpPaginator es una excelente ayuda que nos permite paginar de una forma bastante amigable y facil, normalmente su uso se refiera a pasarle una query que formamos mediante createQuery y este la procesa y nos entrega el resultado paginado segun los parametros que definamos pero… ¿Que sucede cuando deseamos pasarle una consulta personalizada? la respuesta es tajante, no lo soporta, pero nos entrega herramientas para hacerlo.

Seguir leyendo…

Migrar Base de Datos de Symfony1 a Symfony2

Estuve trabajando en un proyecto que estaba hecho en Symfony 1.4, y se nos dio la oportunidad de migrar todo a Symfony 2.3, principalmente para actualizar y hacer los cambios mas rapidos, ya que los comandos que utiliza Propel (ORM) no eran ya muy compatibles y los resultados al ejecutarlos la  verdad es que dejaban harto que desear, nos daba mas problemas que finalmente ayudarnos.

Seguir leyendo…

SELECT CON VARIOS IDs PASADOS POR PARAMETRO CON PROPEL

Tengo un poco botado esto, pero he estado medio ocupado, actualmente estoy modificando un sistema hecho en Symfony1 y que tiene por ORM Propel, y bueno, llegado a un punto requeria tomar un listado de IDs que venian por parametro y realizar una consulta con ellas, por defecto Propel incluye una funcion que realiza esto de una manera muy simple y facil

Seguir leyendo…

CREAR FORMULARIO DE CONTACTO SIN PROGRAMAR

El formulario de contacto en un sitio web es muy importante, aunque mas importante es responderle a las personas que te contactan, pero bueno, eso es otro tema. Volviendo al punto original, que sucede cuando tienes una web y quieres externalizar este «servicio»? esto podria ser por distintos motivos, uno podria ser porque no quieres que la carga de email que envia pase por tu Hosting, lo otro puede ser que alguien indexo tu web y te esta mandando Spam (si es que no le tienes un captcha a tu formulario), o lo otro es simplemente porque no quieres desarrollarlo tu.

Seguir leyendo…

Limpiar un texto con funciones PHP

Me sucedio hace algun tiempo donde tenia una web en php sin ningun framework, y esta requeria recibir valores de distintos tipos, es decir, numeros, letras, una mezcla de los dos, etc.

Una de las soluciones mas simples seria poner una validacion por todos lados en donde lo requerimos, esto, obviamente es muy poco mantenible, ya que si por algun motivo detectamos algun error, tendriamos que buscar por todo el codigo en donde pusimos nuestras validaciones, asi que lo mas facil es centralizar una funcion unica en donde pasamos el valor y la opcion que requerimos.

Seguir leyendo…