symfony2中的角色声明

时间:2015-05-16 00:37:15

标签: symfony 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_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'],
    ),
);

2 个答案:

答案 0 :(得分: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]

这可能有助于你能做什么以及你不能做什么http://symfony.com/doc/current/components/yaml/yaml_format.html#collections

答案 1 :(得分:0)

我知道角色是字符串数组。父级和标题是与每个角色相关的键,我将它们用于我自己的内部任务。我想只在一个地方和一个地方定义角色,并进一步使用指向此键所需键或值的链接。 例如,我在在线YAML解析器中做到了

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

    role_hierarchy:
        *ra: *re

它已成功在线解析,但symfony返回错误