У меня есть приложение symfony2, для которого требуются разные настройки конфигурации для определенных сред, например. test
.Почему моя конфигурация не перезаписывается для тестовой среды в symfony2?
Я перезаписать мой config.yml для тестового envioronment так:
AppKernel.php
:
public function registerContainerConfiguration(LoaderInterface $loader)
{
foreach ($this->getBundles() as $bundle) {
if (false === strpos($bundle->getName(), 'Dreamlines')) {
continue;
}
$configFile = $bundle->getPath() . '/Resources/config/config.yml';
if (!file_exists($configFile)) {
continue;
}
$loader->load($configFile);
}
$loader->load(__DIR__ . '/config/config_' . $this->getEnvironment() . '.yml');
}
В моей config.yml
я определяю:
default_airports:
cun:
de:
- FRA
и в моем config_test.yml I для перезаписывания значения:
default_airports:
cun:
de:
- HAM
Мой ConfigTreeBuilder выглядит для конфигурации выглядит
$treeBuilder = new TreeBuilder();
$rootNode = $treeBuilder
->root('le_bundle');
$rootNode
...
->arrayNode('default_airports')
->isRequired()
->requiresAtLeastOneElement()
->useAttributeAsKey('name')
->prototype('array')
->prototype('array')
->prototype('scalar')->end()
->end()
->end()
->end()
Однако конфигурация не правильно перезаписаны, что делает пробный запуск неудачу.
Что здесь происходит? Я успешно переписал другие записи конфигурации, используя эту стратегию.
Интересно, почему вы делаете Еогеасп и чеки в AppKernel вместо использования расширения инъекции зависимостей. – malcolm
@malcolm Легкий ответ: это наследие ^^ Поэтому я не могу назвать причину, почему это было сделано так. Не могли бы вы указать на пример того, что вы имеете в виду? – k0pernikus
Я имею в виду класс расширения в инъекции зависимостей в собственном пакете, если вы выполняете 'processConfiguration' в методе' load', у вас есть конфигурация вашего пакета, зависящая от фактической среды. http://symfony.com/doc/current/cookbook/bundles/configuration.html#processing-the-configs-array – malcolm