我绝对是初学者。我尝试使用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'],
),
);
答案 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返回错误