FlexyDatabaseConfigBundle 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.
Configurations are all cached using Symfony's container caching mechanism and do not hit the database.
- Installation
- How to use
- Add this to your composer.json :
"require": {
"flexy/database-config-bundle": "dev-master"
}
- Run a composer update :
composer update
- Register the bundle in your AppKernel.php :
public function registerBundles()
{
new Flexy\DatabaseConfigBundle\FlexyDatabaseConfigBundle(),
}
- Extend the getContainerBuilder() method in AppKernel.php :
use Flexy\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
FlexyDatabaseConfigBundle 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.
For example, if you have the following configuration and you want to override project_title
:
twig:
globals:
project_title: My project title
First, we have to add twig
to the container_extension
table :
id | name |
---|---|
1 | twig |
Then, we add every node that leads to project_title
in the container_config
table :
id | parent_id | extension_id | name | value |
---|---|---|---|---|
1 | NULL | 1 | globals | NULL |
2 | 1 | 1 | project_title | My New Project Title |
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.
id | name | value |
---|---|---|
1 | custom_parameter | My custom parameter value |
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.