FOSUserBundle - 如何处理角色?

时间:2013-04-24 14:31:02

标签: php symfony user-management

所以,我已经阅读了documentation的捆绑包,但没有描述如何列出现有角色或为特定用户分配/更改滚动的内容。我需要能够:

  1. 为新注册的用户分配默认角色。
  2. 让管理员和超级用户提升和降级用户。
    • 这要求我能我可以选择的角色。
  3. 那么,这是怎么做到的?

1 个答案:

答案 0 :(得分:4)

您可以这样做:

$roleHierarchy = $container->getParameter('security.role_hierarchy.roles');
$roles = array_keys($roleHierarchy);
$form = $this->createForm(new UserFormType($roles, $user->getRoles()), $user);

在UserFormType中,您可以添加角色字段,如下所示:

protected $roles;
protected $userRoles;

public function __construct($roles, $userRoles)
{

    foreach ($roles as $role) {
        $theRoles[$role] = $role;
    }
    $this->roles = $theRoles;
    $this->userRoles = $userRoles;

}

public function buildForm(FormBuilderInterface $builder, array $options)
{               

    $builder->add('roles', 'choice', array(
                    'choices' => $this->roles,
                    'data' => $this->userRoles,
                    'expanded' => true,
                    'multiple' => true,
                ));

}