У меня есть команда в Symfony2, и я хочу иметь возможность прочитать конфигурацию devel из config_dev.yml
Я пытаюсь получить конфиг в команде execute
метод как это:
protected function execute(InputInterface $input, OutputInterface $output)
{
$this->getContainer()->getParameter('parse');
}
Но когда я выполняю команду:
$ php app/console acme:test
Это дает мне следующее сообщение об ошибке:
Нет расширения, способного загрузить конфигурацию для «acme»
Данные в config_dev.yml
что я хочу получить:
acme:
foo: "bar"
Команда расширяется containerAwareCommand
:
class AcmeCommand extends containerAwareCommand
Есть предложения как этого добиться?
Обновить
Пример дерева конфигурации:
// src / Acme / ApiBundle / DependencyInjection / Configuration.php
public function getConfigTreeBuilder()
{
$treeBuilder = new TreeBuilder();
$rootNode = $treeBuilder->root('acme');
$rootNode
->children()
->scalarNode('foo')->end()
->end()
;
return $treeBuilder;
}
Пример расширения:
// src / Acme / ApiBundle / DependencyInjection / AcmeApiExtension.php
public function load(array $configs, ContainerBuilder $container)
{
$configuration = new Configuration();
$config = $this->processConfiguration($configuration, $configs);
$container->setParameter('acme', $config);
$loader = new Loader\XmlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
$loader->load('services.xml');
Пример config_dev.yml:
...
acme:
foo: "bar"
Если вы просто заинтересованы в хранении и получении произвольных данных из файла конфигурации, то вам следует сохранить их в parameters.yml
, скорее, чем config_dev.yml
,
Конфиг записи в parameters.yml
разрешено быть в свободной форме, если они ниже parameters:
ключ, тогда как входит в config*.yml
файлы должны соответствовать структуре, определенной в конфигурации вашего пакета.
Вы должны определить ключи для данных, которые вы хотите сохранить в parameters.yml.dist
во-первых, однако.
Вы определили дерево конфигурации как Вот?