How to Install 3rd Party Bundles

Most bundles provide their own installation instructions. However, the basic steps for installing a bundle are the same:

A) Add Composer Dependencies

Dependencies are managed with Composer, so if Composer is new to you, learn some basics in their documentation. This has 2 steps:

1) Find out the Name of the Bundle on Packagist

The README for a bundle (e.g. FOSUserBundle) usually tells you its name (e.g. friendsofsymfony/user-bundle). If it doesn’t, you can search for the library on the Packagist.org site.

注解

Looking for bundles? Try searching at KnpBundles.com: the unofficial archive of Symfony Bundles.

2) Install the Bundle via Composer

Now that you know the package name, you can install it via Composer:

$ composer require friendsofsymfony/user-bundle

This will choose the best version for your project, add it to composer.json and download the library into the vendor/ directory. If you need a specific version, add a : and the version right after the library name (see composer require).

B) Enable the Bundle

At this point, the bundle is installed in your Symfony project (in vendor/friendsofsymfony/) and the autoloader recognizes its classes. The only thing you need to do now is register the bundle in AppKernel:

// app/AppKernel.php

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

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

        // ...
    }
}

C) Configure the Bundle

It’s pretty common for a bundle to need some additional setup or configuration in app/config/config.yml. The bundle’s documentation will tell you about the configuration, but you can also get a reference of the bundle’s config via the config:dump-reference command.

For instance, in order to look the reference of the assetic config you can use this:

$ app/console config:dump-reference AsseticBundle

or this:

$ app/console config:dump-reference assetic

The output will look like this:

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:           []
    # ...

Other Setup

At this point, check the README file of your brand new bundle to see what to do next. Have fun!