自动将新角色添加到role_hierarchy中

时间:2013-12-31 15:58:45

标签: symfony

我为管理员创建了一个表单来添加用户并给他们角色,所以我在RegistrationFormType中添加了这一行

  //....

       ->add('roles', 'choice', array(
        'choices'  => array(
            'ROLE_ADMIN'      => 'ROLE_ADMIN',
            'ROLE_USER'       => 'ROLE_USER',
            'ROLE_AUTEUR'     => 'ROLE_AUTEUR',
            'ROLE_MODERATEUR' => 'ROLE_MODERATEUR',
                ),
        'required'    => false,
        'empty_value' => 'Choisissez un ou plusieurs roles',
        'empty_data'  => null,
        'multiple' => true,
        'expanded' => false,
        ))

//.....

代码有效,角色也会添加到数据库中。 我的问题是,如果将来管理员想要添加其他新角色,那么如何自动将它们添加到 role_hierarchy

1 个答案:

答案 0 :(得分:0)

我认为当你添加新角色时,这并不是真的有意义,如果你不在你的应用程序中使用该角色,这对你没有任何影响。因此,您应该先定义角色结构,并使其变得如此精细。

但您不需要在FormType中定义角色。您可以实现从数据库加载角色。因此,您可以在数据库中管理角色,并在配置文件中定义角色层次结构。

http://symfony.com/doc/current/cookbook/security/entity_provider.html#managing-roles-in-the-database

以下是文档中用于管理数据库角色的部分。我想这可以帮到你。

修改

我找到了适合你的东西

http://symfony.com/doc/current/components/security/authorization.html

您可以在您的情况下定义选民,您可以尝试使用RoleHierarchyVoter或RoleVoter,但实现它需要做很多工作。