2012-07-03 56 views
0

我安装了FOSUsrBundle。如何从控制器添加角色到用户?在FOSUserBundle中添加角色

我尝试这个解决方案,但不起作用:

$user = $this->container->get('security.context')->getToken()->getUser(); 
$user->addRole('ROLE_USER'); 
+0

注册时添加角色..您需要通过控制台更改角色。 –

+1

你是什么意思“不起作用”?你怎么知道它不起作用?您是仅仅尝试为当前请求添加它还是想要将此角色保存到数据库? – MDrollette

+0

改变角色从控制台它是好的,但我想改变角色从控制器(在数据库中坚持这个角色),因为我有一个interfece管理员来管理所有用户(更改角色,更改名称,电子邮件......) –

回答

3

只是角色列表中的用户类型表格上添加一个角色的选择领域。

$builder->add('roleList', 'choice', array(
'choices' => array(
    'ROLE_ADMIN' => 'ROLE_ADMIN', 
    'ROLE_USER' => 'ROLE_USER', 
), 
'property_path' => false, 
'multiple' => true, 
)) 

并在控制器只需添加以下代码添加到角色的用户

$formData = $this->getRequest()->request->get($form->getName());   
$roles = $formData['roleList']; 

foreach($roles as $key => $value) 
{ 
$user->addRole($value); 
} 

我认为这是不够分配角色到用户的用户界面。

+1

其实,你不会甚至不需要手动添加角色。只需将'roleList'重命名为'roles','FOSUserBundle'应该在添加用户时添加角色,例如'$ userManager-> updateUser($ formData-> getData())'。这对我有效 –