相关疑难解决方法(0)

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

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

如何获取定义的角色列表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,
    ));

}
Run Code Online (Sandbox Code Playgroud)

并在User.php中

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

当然,此解决方案不起作用,因为roles在数据库中定义为位图,因此choices无法创建列表.

提前致谢.

php symfony fosuserbundle

17
推荐指数
4
解决办法
3万
查看次数

如何将完整的安全角色列表/层次结构传递给Symfony2中的FormType类?

我有一个用户编辑表单,我想管理分配给用户的角色.

目前我有一个多选列表,但我没办法用security.yml中定义的角色层次填充它.

我是否有某种方法可以将此信息提供给FormType类中的表单生成器?

$builder->add('roles', 'choice', array(
                'required' => true,
                'multiple' => true,
                'choices' => array(),
            ));
Run Code Online (Sandbox Code Playgroud)

环顾四周,我发现我可以从控制器中的容器中获取角色:

$roles = $this->container->getParameter('security.role_hierarchy.roles');
Run Code Online (Sandbox Code Playgroud)

我还发现我可以将其设置为在services.xml中注入FormType类的依赖项:

<parameters>
    <parameter key="security.role_heirarchy.roles">ROLE_GUEST</parameter>
</parameters>
<services>
    <service id="base.user.form.type.user_form" class="Base\UserBundle\Form\UserType" public="false">
        <tag name="form.type" />
        <call method="setRoles">
            <argument>%security.role_heirarchy.roles%</argument>
        </call>
    </service>
</services>
Run Code Online (Sandbox Code Playgroud)

然而,这不起作用,似乎没有调用该setRoles方法.

那我怎么能让它运作起来呢?

php symfony

3
推荐指数
1
解决办法
6500
查看次数

标签 统计

php ×2

symfony ×2

fosuserbundle ×1