2016-04-26 64 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