Symfony 3.4:如何在YAML中访问分发包配置

时间:2018-09-17 12:06:50

标签: symfony configuration yaml symfony-3.4

我想问一下是否有一种方法可以从该捆绑软件的YAML访问捆绑软件配置。

具体来说,实现Symfony\Component\Config\Definition\ConfigurationInterface时,我定义了捆绑软件需要一些配置。用户使用我捆绑软件所需的所有密钥,将该配置放入其app/config/bundles/my_bundle.yml中。

my_bundle: magic_key: '42'

现在我的捆绑包中有Resources/config/services.yml,其中配置了一些服务,其中之一需要magic_key

由于我知道magic_key被设置(因为ConfigurationInterface),所以我现在可以在扩展Symfony\Component\HttpKernel\DependencyInjection\Extension的类中访问该键,获取特定服务的定义并为此设置参数。

但是,我想在我的捆绑包中的Resources/config/services.yml中执行此操作,而不要使用and Extension类。 我在https://symfony.com/doc/3.4/service_container/expression_language.html处读到,应该可以使用parametercontainer函数,但是我无法做到这一点。

其背后的原因是,我希望在单个位置(YAML文件)配置捆绑服务,而不是在YAML和Extension.php之间拆分它的当前情况。

确实有可能吗?正确的语法是什么?

1 个答案:

答案 0 :(得分:0)

您需要像这样在MyBundleExtension类的参数中添加配置:

public function load(array $configs, ContainerBuilder $container)
{
    $container->setParameter('my_bundle', $config);
}

然后,您可以在服务参数中添加“%my_bundle%”。