carlinhusDatabaseConfigBundle
Attention! This bundle was previously know as FlexyDatabaseConfigBundle. Make sure to update your composer.json project file to reflect the name change., (*1)
carlinhusDatabaseConfigBundle allows you to store configurations from the configuration tree of a bundle and parameters in a database table. Those configurations and parameters will override those defined in the app/config/config.yml
and app/config/parameters.yml
files., (*2)
Configurations are all cached using Symfony's container caching mechanism and do not hit the database., (*3)
Content
Installation
- Add this to your composer.json :
"require": {
"carlinhus/database-config-bundle": "dev-master"
}
- Run a composer update :
composer update
- Register the bundle in your AppKernel.php :
public function registerBundles()
{
new Carlinhus\DatabaseConfigBundle\CarlinhusDatabaseConfigBundle(),
}
- Extend the getContainerBuilder() method in AppKernel.php :
use Carlinhus\DatabaseConfigBundle\DependencyInjection\Compiler\ContainerBuilder;
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBag;
...
protected function getContainerBuilder()
{
return new ContainerBuilder(new ParameterBag($this->getKernelParameters()));
}
- Update the database schema :
app/console doctrine:schema:update --force
How to use
Add a configuration to the database
carlinhusDatabaseConfigBundle reproduces the configuration tree of a bundle in the database table named container_config
. If you want to add a configuration in the database table, you have to first add the extension name in the container_extension
table. After that, you will have to add each parent node of the configuration tree that leads to the configuration you have to override., (*4)
For example, if you have the following configuration and you want to override project_title
:, (*5)
twig:
globals:
project_title: My project title
First, we have to add twig
to the container_extension
table :, (*6)
Then, we add every node that leads to project_title
in the container_config
table :, (*7)
id |
parent_id |
extension_id |
name |
value |
1 |
NULL |
1 |
globals |
NULL |
2 |
1 |
1 |
project_title |
My New Project Title |
Add a parameter to the database
Parameters are stored in the container_parameter
table in the database. To add a parameter to the database, you just add its name and value to the table., (*8)
id |
name |
value |
1 |
custom_parameter |
My custom parameter value |
Clear the cache
As database configurations and parameters are cached, you will need to do a app/console cache:clear
every time you wish to reload the configuration coming from the database., (*9)