From ab36443943ccba69420b99883c79edda5b826a5a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Fastr=C3=A9?= Date: Thu, 22 Jan 2015 17:35:37 +0100 Subject: [PATCH] documentation for routing refs #273 --- source/development/index.rst | 1 + source/development/routing.rst | 68 ++++++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+) create mode 100644 source/development/routing.rst diff --git a/source/development/index.rst b/source/development/index.rst index eb5f2f7bf..68b5d62f2 100644 --- a/source/development/index.rst +++ b/source/development/index.rst @@ -16,6 +16,7 @@ As Chill rely on the `symfony `_ framework, reading the fram Install Chill for development Instructions to create a new bundle + Routing Menus Message to users Database migrations diff --git a/source/development/routing.rst b/source/development/routing.rst new file mode 100644 index 000000000..519490918 --- /dev/null +++ b/source/development/routing.rst @@ -0,0 +1,68 @@ +.. Copyright (C) 2014 Champs Libres Cooperative SCRLFS + Permission is granted to copy, distribute and/or modify this document + under the terms of the GNU Free Documentation License, Version 1.3 + or any later version published by the Free Software Foundation; + with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. + A copy of the license is included in the section entitled "GNU + Free Documentation License". + + +Routing +####### + +Our goal is to ease the installation of the different bundle. Users should not have to dive into complicated config files to install bundles. + +A routing loader available for all bundles +=========================================== + +A Chill bundle may rely on the Routing Loader defined in ChillMain. + +The loader will load `yml` or `xml` files. You simply have to add them into `chill_main` config + +.. code-block:: yaml + + chill_main: + # ... other stuff here + routing: + resources: + - @ChillMyBundle/Resources/config/routing.yml + +Load routes automatically +------------------------- + +But this force users to modify config files. To avoid this, you may prepend config implementing the `PrependExtensionInterface` in the `YourBundleExtension` class. This is an example from **chill main** bundle : + + +.. code-block:: php + + namespace Chill\MainBundle\DependencyInjection; + + use Symfony\Component\DependencyInjection\ContainerBuilder; + use Symfony\Component\HttpKernel\DependencyInjection\Extension; + use Symfony\Component\DependencyInjection\Extension\PrependExtensionInterface; + + class ChillMainExtension extends Extension implements PrependExtensionInterface + { + + public function load(array $configs, ContainerBuilder $container) + { + // ... + } + + public function prepend(ContainerBuilder $container) + { + + //add current route to chill main + //this is where the resource is added automatically in the config + $container->prependExtensionConfig('chill_main', array( + 'routing' => array( + 'resources' => array( + '@ChillMainBundle/Resources/config/routing.yml' + ) + + ) + )); + } + } + +