首页 > 解决方案 > Symfony 3.4:如何在 YAML 中访问包配置

问题描述

我想问一下是否有办法从该包的 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在我的包中执行此操作,而不是使用和Extension类。我在https://symfony.com/doc/3.4/service_container/expression_language.html读到应该可以使用parameterorcontainer函数,但我不能这样做。

其背后的原因是我希望在单个位置(YAML 文件)配置我的捆绑服务,而不是在 YAML 和Extension.php.

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

标签: symfonyconfigurationyamlsymfony-3.4

解决方案


您需要在 MyBundleExtension 类的参数中添加配置,如下所示:

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

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


推荐阅读