Is it possible to configure a Silex Application with YAML config files? I bet yes, but how is it done correctly? For instance I want to use different configurations according to the environment, like config.dev.yml and config.prod.yml.
The config file should contain parameters for the app itself and for the registered extensions/services.
Example:
// Debug flag should be set in the config file
$app['debug'] = true;
// Extension options should also be set in config file
$app->register(new Silex\Extension\TwigExtension(), array(
'twig.path' => __DIR__.'/views',
'twig.class_path' => __DIR__.'/vendor/Twig/lib',
));
Do I have to parse the YAML file by myself and set the parameters accordingly or is there a more "magic" way to do this?
The LoadConfigExtension described by @fbrandel (above in comments) allows you to share the yml loader config service.
This package in the answer does not work for Silex 2.0 that is why I've created package that works for Silex 2.0 and Symfony/Yaml 3.1. Maybe someone looking for this answer will find it useful
https://packagist.org/packages/rpodwika/yaml-config-service-provider
to use run command
or add
to your composer.json
github link https://github.com/rpodwika/yaml-config-service-provider
to use:
First of all, add the Symfony Yaml component to your composer.json
Use the right version choosing directly from the packagist page: https://packagist.org/packages/symfony/yaml
Now, you can add the deralex YamlConfigProvider, a simple and useful Silex provider. Add it to your composer.json:
Here the official github page: https://github.com/deralex/YamlConfigServiceProvider
Here the packagist page: https://packagist.org/packages/deralex/yaml-config-service-provider
UPDATE
Install the dependencies with
./composer.phar update
command and finally add these lines to your app file:Now, for example, you can do this:
settings.yml
index.php