FOSUserBundle - 创建新用户指定角色。

时间:2012-05-28 02:02:48

标签: php symfony fosuserbundle

想知道如何创建新用户但指定他的角色。目前,当我创建一个新用户时,该程序自动与ROLE_ADMIN角色相关联。

非常欢迎任何信息/代码/示例。

先谢谢。

3 个答案:

答案 0 :(得分:6)

确定。我解决了我的问题。基本上我遵循this指南,并改变了一些方面。

  1. 在我的模型上,我添加了角色字段:protected $roles = array();
  2. 更改了我的表单/类型/ RegistrationFormType.php并添加以下控件:
  3. 代码:

    $user = new UserAdmin();
        $builder->add('roles', 'collection', array(
            'type'   => 'choice',
            'options'  => array(
                'choices'  => array(
                    'nashville' => 'Nashville',
                    'paris'     => 'Paris',
                    'berlin'    => 'Berlin',
                    'london'    => 'London',
                ),
            ),
    ));
    

    现在,当我打开我的注册视图时,它会显示一个下拉列表。在这种情况下,选项包括:纳什维尔,巴黎,柏林,伦敦。

答案 1 :(得分:4)

这是我使用的代码:

    $admin = new User() ;
    $admin->setEmail("adminl@gmail.com") ;
    $admin->setUsername("mitke") ;
    $admin->setPlainPassword("123123123") ;
    $admin->setEnabled(true) ;
    $admin->setSuperAdmin(true) ;

    $user1 = new User() ;
    $user1->setEmail("user1@gmail.com") ;
    $user1->setUsername("user1") ;
    $user1->setPlainPassword("123123123") ;
    $user1->setEnabled(true) ;
    $user1->setRoles( array(User::ROLE_DEFAULT) ) ;

也许它可以帮助你,它适合我。

问题: 您使用/ register创建的所有用户是否都具有管理员角色?也许FOS决定默认情况下第一个注册用户是管理员。

答案 2 :(得分:1)

James Morris的解决方案可能会有所帮助: http://blog.jmoz.co.uk/symfony2-fosuserbundle-roles

更多讨论请参阅:Symfony2 FOSUserBundle Role entities