2016-04-26 12 views
1

私は、例えば私が持っている別のバンドル(特にSecurityBundle)から設定を読む必要があるそのカスタム*Extensionクラスのバンドルを持っています。symfony3で補間されたパラメータでバンドル設定値を取得

security: 
    ... 

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

私はどのように私は、補間url_prefixパラメータでsecurity.firewalls.main.patternの値を取得することができます思ったんだけど?

答えて

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

私はそれが本当に残念だと思います。そのようなハッキングをしないで、より気づいたコンテキストを提供します。

+0

私はそのためにバンドルを書いた。 https://github.com/chalasr/RCHConfigAccessBundleで、ドット構文を使用して設定値を取得できるようにするには、次のようにします。 '$ pattern = container-> get( 'rch_config_access.accessor') - > get( 'security.firewalls .main.pattern '); ' – chalasr

関連する問題