NoticiasBlog.

Los bundles indispensables para iniciarse en Symfony

7 abril, 2018 | Desarrollo

Symfony es uno de los frameworks más potentes y más utilizados a la hora de desarrollar proyectos en PHP. Nació con la filosofía de optimizar y unificar el desarrollo de aplicaciones web utilizando un MVC (Modelo Vista Controlador), el framework Doctrine como ORM para el mapeo de entidades, y el motor de plantillas Twig. 

Pese a ser un framework muy completo, con una documentación oficial extensa y una comunidad activa, existen varios bundles desarrollados por terceros que nos facilitarán el trabajo a la hora de empezar con nuestro proyecto de Symfony.

Ya desde la propia documentación oficial podemos ver la importancia que le dan a los bundles creados por la comunidad, y no es para menos, ya que Friends of Symfony, un grupo de desarrolladores enfocado en bundles para este framework, ha creado herramientas esenciales para agilizar el trabajo.

Desarrollo de APIs REST

A la hora de desarrollar APIs en Symfony, el FOSRestBundle es, sin duda alguna, la herramienta más completa para ello. Junto a este bundle, también es recomendable instalar un serializer como puede ser el JMS.

Para instalar el FOSRestBundle y el JMSSerializer, lo haremos mediante el Composer, ejecutando estos comandos:

composer require friendsofsymfony/rest-bundle

composer require jms/serializer-bundle

Ahora los registraremos en el AppKernel de nuestro proyecto:

new FOS\RestBundle\FOSRestBundle(),

new JMS\SerializerBundle\JMSSerializerBundle(),

Añadiremos las siguientes lineas al archivo config.yml de nuestro proyecto:

fos_rest:

    body_listener: true

    format_listener:

        rules:

            - { path: '^/api/*', priorities: ['json'], fallback_format: json, prefer_extension: false }

    param_fetcher_listener: force

    body_listener: true

    format_listener:

        enabled: true

        rules:

            - { path: '^/', priorities: ['json', 'xml'], fallback_format: 'html' }

    versioning: true

    view:

        view_response_listener: 'force'

    zone:

        - { path: ^/api/* }

Ya estaríamos listos para crear nuestros propios métodos en el ApiController, al que haremos referencia en nuestro archivo routing.yml añadiendo estas líneas:

api:

    resource: "@ApiBundle/Controller/"

    type:     annotation

Para complementar este bundle siempre viene bien tener instalado el Oro Doctrine Extensions, permite realizar consultas utilizando funciones comunes de SQL que no encontramos en Doctrine. Aquí podemos consultar la documentación oficial para ver qué añade a las consultas de Doctrine.

Desarrollo de paneles de administración

A la hora de desarrollar paneles de administración, podemos contar con dos herramientas muy conocidas en la comunidad, SonataAdminBundle y EasyAdminBundle. Ambos bundles nos pueden servir para crear un panel en cuestión de minutos, pero es importante tener en cuenta la profundidad del proyecto antes de decantarnos por uno de ellos.

El EasyAdmin es un bundle ideal para llevar a cabo proyectos sencillos y sin mucha profundidad. Cuenta con funciones básicas muy fáciles de implementar. Es recomendable probar primero con este bundle cuando estamos iniciandonos en Symfony debido a su rapidez y a su simplicidad.

Una vez hayamos comprendido por completo el EasyAdmin, o se nos haya quedado corto, tocará mudarse a SonataAdmin. Este bundle al principio puede parecer muy simple, pero una vez nos ponemos a indagar en su documentación nos daremos cuenta que puedes personalizar todo a tu gusto. Desde modificar por completo su apariencia visual hasta añadirle sus propios bundles que nos brindarán funciones mucho más específicas.

Pese a haber mencionado antes que con mirar la documentación de Sonata nos damos cuenta de todas las funcionalidades extra que podemos añadir, hay que mencionar que la documentación podría estar mucho mejor estructurada y que muchas veces se queda pobre.

Para complementar estos dos últimos bundles siempre está bien contar con IvoryCKEditorBundle, un editor WYSIWYG muy completo para Symfony.

 

Si queremos implementar un gestor de archivos a nuestro panel, el bundle más completo que tenemos es el VichUploaderBundle, que nos permite subir archivos, controlar la extensión, el tamaño, las dimensiones… de forma automática y enlazarlos con entidades.

 

Volvemos a encontrarnos con Friends of Symfony en este apartado, en este caso con el bundle creado para la gestión de usuarios. El FOSUserBundle nos permite crear roles, administrar los emails, controlar los inicios de sesión… en definitiva, un bundle muy completo que además incluye integración con SonataAdmin a través del bundle para Sonata, SonataUserBundle.

Estos son algunos de los bundles claves para Symfony, pero os animo a investigar en su documentación para descubrir muchos más. Aquí tenéis la lista de los bundles más útiles para la comunidad y los enlaces a la documentación oficial de los que hemos mencionado antes.

Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *