使用Symfony2中的命令加载devel配置

时间:2015-02-26 16:19:32

标签: php symfony symfony-2.6

我在Symfony2中有一个命令,我希望能够从config_dev.yml

读取devel配置

我正在尝试在命令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"

2 个答案:

答案 0 :(得分:0)

您是否定义了here之类的配置树?

答案 1 :(得分:0)

如果您只对从配置文件中存储和检索任意数据感兴趣,则应将其存储在parameters.yml中,而不是config_dev.yml

允许parameters.yml中的配置条目是自由格式的,只要它们低于parameters:密钥,而config*.yml文件中的条目必须符合以下定义的结构:你的捆绑配置。

但是,您应该首先在parameters.yml.dist中定义要存储的数据的密钥。