Comment utiliser un fichier de configuration YAML dans Silex Framework

est-il possible de configurer une Application Silex avec des fichiers de configuration YAML? Je parie que oui, mais comment est-il fait correctement? Par exemple je veux utiliser différentes configurations en fonction de l'environnement, comme config.dev.yml et de configuration.prod.yml.

le fichier de configuration doit contenir les paramètres de l'application elle-même et des extensions/services enregistrés.

Exemple:

// Debug flag should be set in the config file
$app['debug'] = true;

// Extension options should also be set in config file
$app->register(new SilexExtensionTwigExtension(), array(
    'twig.path'       => __DIR__.'/views',
    'twig.class_path' => __DIR__.'/vendor/Twig/lib',
));

dois-je analyser moi-même le fichier YAML et régler les paramètres en conséquence? ou est-il plus "magique" de la façon de le faire?

18
demandé sur fbrandel 2011-09-20 18:13:34

3 réponses

tout d'abord, ajoutez le composant Symfony Yaml à votre compositeur.json

"symfony/yaml": "2.1.*@dev",

utilisez la bonne version en choisissant directement de la page packagist:https://packagist.org/packages/symfony/yaml

Maintenant, vous pouvez ajouter le deralex YamlConfigProvider, un fournisseur de Silex simple et utile. Ajouter à votre compositeur.json:

"deralex/yaml-config-service-provider": "1.0.x-dev"

Voici la page github officielle: https://github.com/deralex/YamlConfigServiceProvider

Ici le packagist page: https://packagist.org/packages/deralex/yaml-config-service-provider

UPDATE

installez les dépendances avec ./composer.phar update commande et enfin, ajoutez ces lignes à votre application fichier:

$app = new Silex\Application();
$app->register(new DerAlex\Silex\YamlConfigServiceProvider(__DIR__ . '/settings.yml'));

Maintenant, par exemple, vous pouvez le faire ceci:

paramètres.yml

database:
    driver: pdo_mysql
    host: localhost
    dbname: database_name
    user: root
    password: password
    charset: utf8

index.php

$app->register(new Silex\Provider\DoctrineServiceProvider(), array(
    'db.options' => $app['config']['database']
));
37
répondu Francesco Casula 2013-07-10 07:17:40

ce paquet dans la réponse ne fonctionne pas pour Silex 2.0 c'est pourquoi j'ai créé un paquet qui fonctionne pour Silex 2.0 et Symfony/Yaml 3.1. Peut-être que quelqu'un qui cherche cette réponse la trouvera utile

https://packagist.org/packages/rpodwika/yaml-config-service-provider

pour utiliser la commande exécuter

composer require rpodwika/yaml-config-service-provider

ou ajouter

"rpodwika/yaml-config-service-provider" : "dev-master" 

pour votre compositeur.json

lien github https://github.com/rpodwika/yaml-config-service-provider

utilisation:

<?php

require_once __DIR__.'/../vendor/autoload.php';

$app = new Silex\Application();

$app->register(new Rpodwika\Silex\YamlConfigServiceProvider("settings.yml"));

echo $app['config']['database']['driver'];
3
répondu Robert 2016-09-15 13:26:15

L'extension Loadconfig décrite par @fbrandel (ci-dessus dans les commentaires) vous permet de partager le service de configuration du chargeur yml.

0
répondu Ronan 2011-12-04 14:41:32