2015-05-16 90 views
0

我絕對是yaml的初學者。我嘗試使用symfony2,我想在我的包中的一個parameters.yml中聲明幾個角色。symfony2中的角色聲明

roles_set: 
    editor: 
     role: ROLE_EDITOR 
     title: Editor 
     parent: ~ 
    admin: 
     role: ROLE_ADMIN 
     title: Admin 
     parent: ROLE_EDITOR 
    master: 
     role: ROLE_MASTER 
     title: Master 
     parent: ROLE_ADMIN 

之後我想在security.yml中設置role_hierarchy。我是根據symfony的文檔

role_hierarchy: 
    ROLE_ADMIN: ROLE_EDITOR 
    ROLE_MASTER: ROLE_ADMIN 

設置它,但我想從parameters.yml獲得申報角色,並在security.yml使用它。在僞代碼中,它將是

array(
    'role_hierarchy' => array(
     $roles_set['admin']['role'] => $roles_set['admin']['parent'], 
     $roles_set['master']['role'] => $roles_set['master']['parent'], 
    ), 
); 

回答

0

角色沒有標題,父屬性。它們只是簡單的字符串數組。 您可以在不同的文件中定義你的角色,roles.yml例如,像這樣:

parameters:   
    ROLE_SPECIAL: 
      - ROLE_SPECIAL 
      - ROLE_SPECIAL_2 

而在你security.yml可以包括文件

imports: 
    - { resource: roles.yml } 
security: 
    role_hierarchy: 
     ROLE_USER:  ROLE_USER 
     ROLE_ADMIN:  [ROLE_USER, %ROLE_SPECIAL%] 
     ROLE_SUPER_ADMIN: [ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH] 

這可能在條款幫助你可以什麼,你不能在yaml做什麼http://symfony.com/doc/current/components/yaml/yaml_format.html#collections

0

我知道角色是字符串數組。父母和標題是與每個角色相關的密鑰,我將它們用於我自己的內部任務。我只想在一個地方只定義一次角色,並進一步使用指向此密鑰的所需密鑰或值的鏈接。 比如我這樣做是在在線YAML解析器

roles: 
     editor: 
      role: &re ROLE_EDITOR 
      title: Editor 
     admin: 
      role: &ra ROLE_ADMIN 
      title: Admin 
      parent: *re 

    role_hierarchy: 
     *ra: *re 

它是成功的在線分析,但是symfony的返回錯誤