2016-04-26 70 views
1

我有一个包含自定义*Extension类的包,其中我需要从另一个包(特别是SecurityBundle)读取配置,例如,在Symfony3中获取包含插值参数的包配置值

security: 
    ... 

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

我不知道我怎么可以得到插值url_prefix参数security.firewalls.main.pattern价值?

回答

1

不支持将配置值(与扩展名不同的任何绑定配置到您的扩展所在的位置,因为您处于扩展状态)不受支持,并且似乎不会在未来。

的唯一途径是:

定义一个参数代表全选项的值(如在一个类似的问题指向的this answer):

$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']; 

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

使用Yaml component解析您的config.yml

我认为这真的很可惜不能从任何骗局中获取配置选项而不是做这样的黑客。

+0

我为此写了一个包。 https://github.com/chalasr/RCHConfigAccessBundle,允许使用点语法检索任何配置值,这里是:'$ pattern = container-> get('rch_config_access.accessor') - > get('security.firewalls .main.pattern');' – chalasr