2016-05-20 3 views
0

に非パラメータのエントリを参照:もちろん私はかなり広範囲に設定.ymlファイルを持っていると私はそこに各種の設定を参照したいconfig.yml

security: 
    role_hierarchy: 
     ROLE_ADMIN: ROLE_USER 
     ROLE_SUPER_USER: ROLE_ADMIN 

easy_admin: 
    entities: 
     Group: 
      form: 
       fields: 
        - 
         property: 'roles' 
         type: choice 
         type_options: 
          expanded: true 
          multiple: true 
          choices: "%security.role_hierarchy%" 

最後の行は動作しません%security.role_hierarchy%ので、 parameters.security.role_hierarchyを指す。 easy_adminセクションにsecurity.role_hierarchyを参照する有効な方法はありますか?

答えて

0

YAMLでこれを行う有効な方法は、標準機能anchors and aliasesを使用することです。アンカー(何が参照されようとしていること)&<name>で示されており、エイリアス(アンカーが参照されている1つの以上のポイントが) `*」で示されます

security: 
    role_hierarchy: &hr1 
     ROLE_ADMIN: ROLE_USER 
     ROLE_SUPER_USER: ROLE_ADMIN 

easy_admin: 
    entities: 
     Group: 
      form: 
       fields: 
        - 
         property: 'roles' 
         type: choice 
         type_options: 
          expanded: true 
          multiple: true 
          choices: *hr1 

マッピングエントリchoicesの値は、とき(YAMLパーサが書き込まれているプログラミング言語のオブジェクトのようなハッシュまたは辞書に翻訳)

ROLE_ADMIN: ROLE_USER 
ROLE_SUPER_USER: ROLE_ADMIN 

、キーrole_hierarchyの値として同じエンティティである:検索するマッピングであろう。

+0

ここで紹介した簡単なケースで動作します。しかし、設定が多くのファイルに分散されていて、それぞれがsecurity.role_hierarchyを定義している場合はどうでしょうか?あなたのソリューションはsymfonyによってマージされたsecurity.role_hierarchyの値ではなく、コード内のポイントを参照しているようです。 私が言ったように、あなたのソリューションは私が尋ねた質問に答えるもので、私はそれ以外の場合に使用します。だから、ありがとうございます:)私はそれを受け入れ、別の質問をするつもりです、ここにリンクします。 – Forseti

+0

私はフォローアップの質問をしました:https://stackoverflow.com/questions/37361467/referencing-non-parameter-entries-in-distributed-config-yml – Forseti

+0

@Forseti YAMLはドキュメント内でこれらの参照を行うことができます。ファイル内に複数の文書がある場合でもそうではありません。そのようなもののためには、ドキュメントをロードするプログラムは注意が必要で、YAMLアンカー/エイリアスとは異なる構文でなければなりません。私が知っているすべてのパーサは、ファイル内に以前のアンカーを持たないエイリアスを吹き飛ばします。あなたのケースではsymfony2までですが、私はそこであなたを助けることはできません。 – Anthon

関連する問題