Skip to content

[WIP][Cookbook] Document how to install 3th party bundles #2404

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 5 commits into from
Mar 31, 2013
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions cookbook/bundles/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,4 @@ Bundles
override
remove
extension
installation
141 changes: 141 additions & 0 deletions cookbook/bundles/installation.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,141 @@
.. index::
single: Bundle; Installation

How to install 3rd party bundles
================================

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

Add composer dependencies
-------------------------

Starting from Symfony 2.1 dependencies are managed with Composer. It's
a good idea to learn some basics of Composer in `their documentation`_.

Before you can use composer to install a bundle, you should look for a
`Packagist`_ package of that bundle. For example, for the
`FOSUserBundle`_ you should look for a
``friendsofsymfony/user-bundle`` package and it does exists:
https://packagist.org/packages/friendsofsymfony/user-bundle .

.. note::

Packagist is the main archive for Composer. If you are searching
for a bundle, the best thing you can do is check out
`KnpBundles`_, it is the unofficial achive of Symfony Bundles. If
a bundle contains a ``README`` file, it is displayed there and if it
has a Packagist package it shows a link to the package. It's a
really usefull site to begin searching for bundles.

Now that you have the package name, you should determine the version
you want to use. Usually different versions of a bundle correspond to
a particular version of Symfony, this should be in the ``README`` file
(in the Package, which you can view on Github or KnpBundles). If it
isn't in the ``README``, you can use the version you want. In the case
of the FOSUserBundle, the ``README`` file has a caution that version
1.2.0 must be used for Symfony 2.0 and 1.3+ for Symfony
2.1+. Packagist provides require statements for all existing
versions. For the current development version it is now
``"friendsofsymfony/user-bundle": "2.0.*@dev"``.

Now we can add the bundle to our ``composer.json`` file and update the
dependencies. You can do this manually:

1. **Add it to the ``composer.json`` file:**

.. code-block:: json

{
...,
"require": {
...,
"friendsofsymfony/user-bundle": "2.0.*@dev"
}
}

2. **Update the dependency:**

.. code-block:: bash

$ php composer.phar update friendsofsymfony/user-bundle

or update all dependencies
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this should not get indented

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

But it should be under the '2.' list element. Shouldn't it?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh, wait you used list items :)

I would suggest to drop the list items and use something like we did in components/install

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I tried to make it like in components/install but it looks like this now:

.. code-block:: bash

    $ php composer.phar update friendsofsymfony/user-bundle

or update all dependencies

.. code-block:: bash

    $ php composer.phar update

Or you can do this in one command:

.. code-block:: bash

    $ php composer.phar require friendsofsymfony/user-bundle:dev-master

In reality examples 1 and 2 are grouped. But its hard to determine it visually (only capital Or points to that). I guess that initial formatting is easier to read. What do you think?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it's good right now. When it's merged we can see how it looks on the site and change it to make it more clear


.. code-block:: bash

$ php composer.phar update

Or you can do this in one command:

.. code-block:: bash

$ php composer.phar require friendsofsymfony/user-bundle:2.0.*@dev

Enable the bundle
-----------------

Now the bundle is installed into our Symfony project (in
``vendor/friendsofsymfony/``) and the autoloader recognizes this
bundle. The only thing we need to do now is registering the bundle in
the ``AppKernel``::

// app/AppKernel.php

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

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

// ...
}
}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

some very big indentation issues here


Configure the bundle
--------------------

Usually bundles require some configuration to be added to app's
``app/config/config.yml`` file. The bundle's documentation will likely
describe that configuration. But you can also get a reference of the
bundle's config via ``config:dump-reference`` command.

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

.. code-block:: bash

$ app/console config:dump-reference AsseticBundle
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nice i did not know this trick


or this:

.. code-block:: bash

$ app/console config:dump-reference assetic

The output will look like this:

.. code-block:: text

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

.. _their documentation: http://getcomposer.org/doc/00-intro.md
.. _Packagist: https://packagist.org
.. _FOSUserBundle: https://github.com/FriendsOfSymfony/FOSUserBundle
.. _KnpBundles: http://knpbundles.com/