Charger des paramètres en fonction du host
Bonjour à tous,
J'arrive fraichement dans le monde symfony.
Je me lance donc sur un premier projet qui est déployé à la fois en local (wamp win10) et à distance sur un hébergement Ovh
Forcément, dans les deux cas, certains parametres du fichier parameters.yml sont différents. Comme les paramètres database et mailer
Plutot que d'avoir des valeurs différentes dans le fichier parameters.yml local et distant, j'aimerais avoir un fichier de configuration qui soit chargé en fonction du domaine sur lequel le projet est appelé
Par exemple en local sur http://localhost/....., je charge le fichier parameters_localhost.yml et à distance sur le domaine http://mondomaine.com/...... je charge le fichier parameters_mondomaine.com.yml
J'ai fait de nombreuses recherches et je suis tombé sur cette question:
http://stackoverflow.com/questions/3...ding-on-domain
Je pensais avoir la solution et j'ai donc fait un bundle maison (pour le réutiliser à l'avenir) dans lequel j'ai mis le code suivant:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| class pcEservicesMulticonfigExtension extends Extension
{
/**
* {@inheritdoc}
*/
public function load(array $configs, ContainerBuilder $container)
{
$configuration = new Configuration();
$config = $this->processConfiguration($configuration, $configs);
$rootdir = $container->getParameter('kernel.root_dir');
$request = Request::createFromGlobals();
$loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
$loader->load('services.yml');
// Load parameters depending on current host
$paramLoader = new Loader\YamlFileLoader($container, new FileLocator($rootdir.'/config')); // Access the root config directory
$host = $request->getHttpHost();
if ($host==":")
$host = "localhost";
$parameters = sprintf('parameters_%s.yml', $host);
if (!file_exists($rootdir.'/config/'.$parameters)) {
$parameters = 'parameters_default.yml'; // Default
}
$paramLoader->load($parameters);
}
} |
Et là, je n'arrive pas à le faire prendre en compte.
Si je laisse les paramètres dans parameters.yml en espérant que mon bundle va écraser les valeurs existantes, niet, ce sont les valeurs de parameters.yml qui sont prises en compte
Je me suis alors dit que mon bundle était peut etre appelé avant et que c'etait lui qui était écrasé.
J'ai donc supprimé de parameters.yml les valeurs que je redéclare dans mon bundle et là, j'ai des erreurs disant que les valeurs n'existent pas
Tout se passe donc comme si mon bundle n'etait pas actif alors que si je mets un echo dedans, je le vois ressortir AVANT les exceptions d'erreurs....
Precision peut etre utile, pour l'instant, je teste la bonne prise en compte de mes parametres via la console. Ne serait qu'avec une commande cache:clear --env=dev ou encore doctrine:schema:update --dump-sql
Merci de votre aide