c33s/symfony-config-manipulator-bundle
Symfony2 bundle to keep YAML config organized by splitting app/config/config*.yml into section files (framework, doctrine, twig, etc.) and rewriting imports accordingly. Helps declutter large config.yml files and manage per-environment configs cleanly.
Do you hate stuffing tons of config into a single config.yml file, losing track of all the sections inside the file? Then this is for you!
This bundle provides some general-purpose YAML and Symfony config manipulation tasks. The most important one
is to split the Symfony app/config/config*.yml files into separate sections, leading to a structure like this:
# Symfony Standard Edition 2.7.3
app/config
├── config
│ ├── assetic.yml
│ ├── doctrine.yml
│ ├── framework.yml
│ ├── parameters.yml
│ ├── swiftmailer.yml
│ └── twig.yml
│
├── config_dev
│ ├── assetic.yml
│ ├── framework.yml
│ ├── monolog.yml
│ ├── swiftmailer.yml
│ └── web_profiler.yml
│
├── config_prod
│ ├── doctrine.yml
│ ├── framework.yml
│ └── monolog.yml
│
├── config_test
│ ├── framework.yml
│ ├── swiftmailer.yml
│ └── web_profiler.yml
│
├── config_dev.yml
├── config_prod.yml
├── config_test.yml
├── config.yml
│
│ # parameters.yml, routing.yml, security.yml etc. will never be touched
├── parameters.yml
├── parameters.yml.dist
├── routing_dev.yml
├── routing.yml
├── security.yml
└── services.yml
The cleaned up config.yml looks like this:
imports:
- { resource: parameters.yml }
- { resource: security.yml }
- { resource: services.yml }
- { resource: config/assetic.yml }
- { resource: config/doctrine.yml }
- { resource: config/framework.yml }
- { resource: config/parameters.yml }
- { resource: config/swiftmailer.yml }
- { resource: config/twig.yml }
config_dev.yml content:
imports:
- { resource: config.yml }
- { resource: config_dev/assetic.yml }
- { resource: config_dev/framework.yml }
- { resource: config_dev/monolog.yml }
- { resource: config_dev/swiftmailer.yml }
- { resource: config_dev/web_profiler.yml }
config.yml isn't edited by several people at onceRequire c33s/symfony-config-manipulator-bundle in your composer.json file:
{
"require": {
"c33s/symfony-config-manipulator-bundle": "@stable",
}
}
or, if you are using 'composer-yaml':
require:
c33s/symfony-config-manipulator-bundle: '@stable'
Register the bundle in app/AppKernel.php:
// app/AppKernel.php
public function registerBundles()
{
return array(
// ... existing bundles
new C33s\SymfonyConfigManipulatorBundle\C33sSymfonyConfigManipulatorBundle(),
);
}
All you have to do is run a single command:
$ php app/console config:refresh-files
You may re-run it anytime you want. This is especially helpful if you are adding new configuration sections to your project. Just paste them into your main
config.yml, config_dev.yml or similar files and run the command to instantly move the new configuration to separate files.
If you add a config section to your config.yml that is already present in a separate file with the same name, the command will exit with an error message.
Merge your configurations manually and you're good again.
The config splitter will never overwrite any existing module config files as long as they contain parseable YAML. But as Murphy's law goes, there might be bugs where nobody expects them.
Make sure to commit your configuration files to your git repository to keep your code safe!
How can I help you explore Laravel packages today?