在Symfony3中使用插值参数获取bundle配置值

时间:2016-04-26 09:30:11

标签: symfony

我有一个自定义*Extension类的包,我需要从另一个包中读取配置(特别是SecurityBundle),例如我。

security:
    ...

    firewalls:
        main:
            pattern: '^%url_prefix%'

我想知道如何通过插值security.firewalls.main.pattern参数获得url_prefix的价值?

1 个答案:

答案 0 :(得分:1)

不支持检索配置值(任何捆绑包不同于您的扩展程序所在的捆绑包,因为您在扩展中),并且似乎未来不会出现。

唯一的方法是:

定义一个参数,表示整个选项的值(在类似问题上由this answer指出):

# app/config/security.yml
parameters:
    firewalls.main.pattern: '^%url_prefix%'
    # ...
security:
    # ...
    firewalls:
        main:
            pattern: '^%url_prefix%'

使用Yaml component解析您的config.yml

$yamlPath = $this->getParameter('kernel.root_dir').'/config/security.yml';
$config = Symfony\Component\Yaml\Yaml::parse(file_get_contents($yamlPath));

// The option value
$value = $config['security']['firewalls']['main']['pattern'];

我认为,如果没有这样的黑客攻击,就无法从任何容器感知的上下文中检索配置选项,真的很遗憾。