2014-09-28 41 views

回答

0

FOSUserBundle具有addRole()和removeRole()方法來添加和刪除角色。

做動作時,可能是這樣的:

 /** 
    * @Route("/admin/user/change-role/{id}/{role}") 
    */ 
    public function roleAction($id, $role) 
    { 
     $em = $this->getDoctrine()->getManager(); 
     $user = $em->getRepository('MyGreatBundle:User')->find($id); 

     if (!$user) { 
      throw $this->createNotFoundException('No user found for id '.$id); 
     } 

     if ($user->hasRole($role)){ 
      $user->removeRole($role); 
     } else { 
      $user->addRole($role); 
     } 

     $username = $user->getUsername(); 

     $em->flush(); 

     return $this->render('MyGreatBundle:Default:role.html.twig', array('result' => $username, 'role' => $role,)); 
    } 

這個動作添加或刪除用戶角色。操作接受用戶和角色的ID。角色可以是例如:ROLE_NEWS,ROLE_EVENT,ROLE_SOMETHING ...如果用戶已經擁有這個角色,那麼動作將會刪除該角色,否則它會被添加。

您還可以使用hasRole()方法創建用於檢查角色的類似操作。

相關問題