symfony2中的角色声明

symfony2中的角色声明,symfony,yaml,Symfony,Yaml,我绝对是yaml的初学者。我尝试使用symfony2,并希望在包中的parameters.yml中声明几个角色 roles_set: editor: role: ROLE_EDITOR title: Editor parent: ~ admin: role: ROLE_ADMIN title: Admin parent: ROLE_EDITOR master:

我绝对是yaml的初学者。我尝试使用symfony2,并希望在包中的parameters.yml中声明几个角色

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_层次结构。我是根据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'],
    ),
);

角色没有标题、父属性。它们只是字符串的数组。 您可以在不同的文件中定义角色,例如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中可以做什么和不能做什么。我知道角色是字符串数组。父项和标题是与每个角色相关的键,我将它们用于自己的内部任务。我只想在一个地方定义一次角色,并进一步使用指向所需键或该键值的链接。 例如,我是在在线YAML解析器中完成的

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

    role_hierarchy:
        *ra: *re
已成功联机分析,但symfony返回错误