10 bundles que deberías conocer si vas a trabajar con Symfony

Los 10 bundles que más uso de Symfony

Esta mañana he realizado una recopilación de los bundles que casi siempre acabo instalando en los proyectos que desarrollo con Symfony. No son todos los que están ni están todos los que son pero creo que por la funcionalidad que aportan y la versatilidad que ofrecen a la hora de configurarlos merecía la pena hablar un poco de ellos. Así que… ¡allá vamos!

1. FOSUserBundle

Cualquier recopilatorio que se precie debe contener este fantástico bundle proporcionado por Friends of Symfony el cual provee la funcionalidad básica para trabajar con usuarios en Symfony.

Entre sus principales características se encuentra la definición de un modelo básico para definir la entidad usuario, un provider para cargar usuarios por username o email así como todo el proceso (junto con sus rutas, formularios y controladores) para que los usuarios puedan registrarse, iniciar sesión, validar su cuenta o recuperar la contraseña.

Todo esto hace de FOSUserBundle el mejor punto de partida si tenéis que integrar cuentas de usuario en vuestra aplicación.

2. SonataAdminBundle

Para mí, el mejor bundle que podéis instalar si necesitáis montar un panel de administración para vuestra aplicación.

Pese a que SonataAdminBundle puede tener una curva de aprendizaje algo más elevada que EasyAdmin, su gran versatilidad nos permite crear un panel que resuelva prácticamente cualquier necesidad que tengamos. Las operaciones CRUD son configuradas mediante servicios especiales etiquetados como sonata.admin, y su implementación es muy muy rápida, apenas 50 líneas de código.

Además, se pueden crear blocks para añadir funcionalidad extra al panel. Y sí, también soporta la exportación de datos a diversos formatos.

3. FOSElasticaBundle

Nuevamente Friends of Symfony acude al rescate, esta vez para ayudarnos a integrar ElasticSearch en nuestra aplicación. FOSElastica, basado en la librería Elastica de Ruflin, nos permite definir por medio de un archivo yamllos índices, los tipos de documentos que en ellos almacenaremos y el mapeo de nuestras entidades de una forma tan sencilla que parece magia. Nuevamente, otro bundle imprescindible.

Además regularmente se actualiza para soportar las nuevas versiones que van saliendo de ElasticSearch por lo que podemos tener garantizado que se integrará sin problemas con este fantástico servicio.

4. Doctrine Extensions

En el caso de que necesitéis acciones automáticas sobre vuestras entidades como generar el slug a partir de otras propiedades, establecer la fecha de creación o modificación de forma automática o añadir la posibilidad de traducirlas, Doctrine Extensions son vuestra mejor opción.

Tras instalarlas, accederemos a todas estas funcionalidades con tan solo definir las anotaciones pertinentes en las propiedades de vuestra entidad (o a través de un archivo yaml si estáis empleando ese método de configuración).

5. HWIOAuthBundle

Si necesitáis añadir la posibilidad de iniciar sesión empleando Facebook o cualquier otra red social, HWIOAuthBundle es perfecto, ya que con tan solo definir los listeners adecuados el inicio de sesión mediante terceros quedará perfectamente integrado en vuestra aplicación.

Además es compatible, como no podía ser de otro modo, con FOSUserBundle, por lo que ambos os resolverán todo el tedioso proceso de añadir un login en vuestra aplicación. Y sí, también contempla y da solución al problema de la duplicación de usuarios cuando su email ya existe e inicia sesión a través de una red social, algo que no siempre se gestiona bien.

6. SonataMediaBundle

Antes os hablábamos de SonataAdminBundle como uno de los mejores paneles de administración que podéis encontrar. Bien, pues SonataMediaBundle hace que trabajar con imágenes o archivos sea realmente sencillo desde ese mismo panel.

Además, tiene integración directa con Amazon lo cual nos permite trabajar con S3 como CDN de forma muy fácil. También provee de la posibilidad de establecer contextos, los cuales sirven para especificar el tamaño de los thumbnails que se generarán cuando se suba una imagen, algo que es de agradecer, ahorrándonos de este modo bastante tiempo.

7. FOSRestBundle

Con la aparición de React, Angular y el resto frameworks para el desarrollo frontend, se ha hecho indispensable poder montar API’s de una forma rápida y sencilla.

Gracias a FOSRestBundle podremos crear una API Rest desde 0, especificando las características de cada ruta, el formato en el que se devolverán los datos (JSON rulez) y emplear los distintos grupos de serialización que definamos para devolver determinadas propiedades de nuestros objetos en función de la ruta accedida.

Además, soporta por completo el estándar REST por lo que podremos presumir de haber montado una API de este tipo sin mucho esfuerzo.

8. JMSSerializerBundle

En relación con el bundle anterior, si queremos controlar la forma en que nuestras entidades serán serializadas antes de devolverse, JSMSerializer es vuestra mejor opción. Además de permitirnos especificar qué propiedades serán devueltas, también podremos especificar grupos, con el fin de diferenciar las propiedades a exportar según el contexto que especifiquemos. Por supuesto, se integra perfectamente con FOSRest.

9. WebpackEncore

La llegada de webpack supuso una verdadera revolución a la hora de gestionar los css, js y assets de nuestra aplicación. WebpackEncoreBundle nos permite integrarlo directamente en nuestra aplicación pudiendo acceder además a todas sus opciones mediante un archivo de configuración propio residente en la raíz de nuestro proyecto. Un bundle imprescindible sobre todo ahora que la versión 4 de Symfony lo recomienda como método para organizar nuestros assets.

10. KNPSnappyBundle

Eeste bundle el cual nos permite generar PDF’s como si de archivos HTML se tratase, ya que lo que hace es es recibir una plantilla Twig y generar el pdf correspondiente. En nuestra opinión, es un sustituto natural de la librería FPDF, ya que agiliza mucho el proceso de generar PDF’s. Eso sí, requiere que tengáis instalada la librería WKHTMLTOPDF en nuestro servidor.

Y con esto termina esta pequeña lista de los bundles que uso más regularmente. Como seguro que me he dejado alguno os animo a dejarlo en los comentarios para que el resto de lectores pueda conocerlos.