如何添加多个角色并使用symfony2中的FOSUSERBUNDLE进行检查?
我有一些问题需要为单个用户FOS添加多个角色。想知道如何在我的控制器和树枝中添加和检查它吗?
答案 0 :(得分: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, ));
}
此操作可向用户添加或删除角色。 Action接受用户和角色的id。角色可以是例如:ROLE_NEWS,ROLE_EVENT,ROLE_SOMETHING ......如果用户已经拥有此角色,则action将删除该角色,否则将添加。
您还可以使用方法hasRole()创建类似的检查角色的操作。