Integración de bundles de terceros en Symfony

Para integrar o instalar bundles de terceros en Symfony hay que seguir 3 sencillos pasos, aunque depende del bundle

La mayoría de los bundles proporcionan sus propias instrucciones de instalación. Sin embargo, los pasos básicos para instalar un bundle son los mismos:

  1. Añadir dependencias en Composer
  2. Activar el Bundle
  3. Configurar el Bundle

1. Añadir dependencias en Composer

Las dependecias se manejan con Composer. Puedes leer su documentación aquí.

Puedes encontrar un bundle desde diferentes sitios, como Packagist o KnpBundles.

Para instalar el bundle a través de composer:

composer require friendsofsymfony/user-bundle

Este comando elegirá la mejor versión para tu proyecto, añadirá las dependencias en Composer y descargará la librería en el directorio vendor/. Si necesitas una versión específica añade un segundo argumento:

composer require friendsofsymfony/user-bundle "~2.0"

2. Activar el Bundle

El bundle ya está instalado, y el autoloader reconoce sus clases. Ahora sólo hay que registrar el bundle en AppKernel:

// app/AppKernel.php

// ...
class AppKernel extends Kernel
{
    // ...

    public function registerBundles()
    {
        $bundles = array(
            // ...,
            new FOS\UserBundle\FOSUserBundle(),
        );

        // ...
    }
}

En algunos casos es posible que sólo quieras que el bundle está disponible en el entorno de desarrollo. Por ejemplo el bundle DoctrineFixturesBundle produce datos de ejemplo, algo que probablemente sólo necesites en este entorno. Para ello el bundle se registra de la siguiente forma:

// app/AppKernel.php

// ...
class AppKernel extends Kernel
{
    // ...

    public function registerBundles()
    {
        $bundles = array(
            // ...
        );

        if (in_array($this->getEnvironment(), array('dev', 'test'))) {
            $bundles[] = new Doctrine\Bundle\FixturesBundle\DoctrineFixturesBundle();
        }

        // ...
    }
}

3. Configurar el Bundle

Es bastante común que haya que añadir algún tipo de configuración en app/config/config.yml. La documentación del bundle te informará acerca de esa configuración, pero también puedes saber la configuración del bundle a través del comando config:dump-reference:

Por ejemplo para buscar la configuración del bundle assetic:

bin/console config:dump-reference AsseticBundle

o así:

bin/console config:dump-reference assetic

El resultado será:

assetic:
    debug:                %kernel.debug%
    use_controller:
        enabled:              %kernel.debug%
        profiler:             false
    read_from:            %kernel.root_dir%/../web
    write_to:             %assetic.read_from%
    java:                 /usr/bin/java
    node:                 /usr/local/bin/node
    node_paths:           []
    # ...

Fuentes: symfony.com