2015-05-16 4 views
0

Я абсолютно новичок в yaml. Я пытаюсь использовать symfony2, и я хочу объявить несколько ролей в параметрах.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 

После этого я хочу установить role_hierarchy в security.yml. Я поставил его в соответствии с симфони документации

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 Parser

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

    role_hierarchy: 
     *ra: *re 

Он был успешно проанализирован онлайн, но Symfony возвращает ошибку

Смежные вопросы