Symfony2:在 FormBuilder 中获取用户角色列表

2022-08-30 21:31:31

我正在为用户创建创建创建表单,并且我想在创建用户时向用户提供一个或多个角色。

如何获取 中定义的角色列表?security.yml

这是我目前的表单构建器:

public function buildForm(FormBuilder $builder, array $options)
{
    parent::buildForm($builder, $options);

    // add your custom fields
    $user = new User();
    $builder->add('regionUser');
    $builder->add('roles' ,'choice' ,array('choices' => $user->getRolesNames(),
            'required'  => true,
    ));

}

和用户.php

public function getRolesNames(){
    return array(
        "ADMIN" => "Administrateur",
        "ANIMATOR" => "Animateur",
        "USER" => "Utilisateur",        
    );
}

当然,此解决方案不起作用,因为该解决方案被定义为数据库中的位图,因此无法创建列表。roleschoices

提前致谢。


答案 1

security.role_hierarchy.roles容器参数将角色层次结构保存为数组。您可以对其进行泛化以获取定义的角色列表。


答案 2

您可以从此方法获取可访问角色的列表:

Symfony\Component\Security\Core\Role\RoleHierarchy::getReachableRoles(array $roles)

它似乎返回数组参数中角色可访问的所有角色。它是 Symfony 的内部服务,其 ID 是公共的,也不是公共的(必须显式地将其作为参数传递,它不能从服务容器中访问)。$rolessecurity.role_hierarchy


推荐