2012-07-03 90 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())'。這對我有效 –