2013-02-24 98 views
8

我正在使用FOSUserBundle和组选项。 注册工作。组的创建也起作用。 如果我创建了2个组,管理员和客户端,并手动向fos_group表中的管理组添加a:1:{i:0; s:10:“ROLE_ADMIN”;},然后在fos_user_user_group中MANULLY设置和条目,管理员组的用户,使用该用户登录将能够以管理员身份登录。FOSUserBundle组角色设置

然而,这种方法显然有一些缺点。 现在可以使用什么将用户添加到组?使用升级命令行选项只会将该角色添加到该用户,但添加到fos_user表中,而且由于我使用的是组,我怀疑fos_user表的角色列不再使用。如果它仍然有用处,我如何以编程方式将用户分配给组?

我的另一个大问题是如何将角色分配给组。也许我没有得到关于整个团体的想法,但我希望能够在创建时添加一个组的角色,但“新”形式只需要组名称,并且不会似乎不存在用于组的用户升级命令的等同物。

谢谢。

回答

14

如何以编程方式将用户分配到组?

$user->addGroup($group); 

由于您使用的是FOSUserBundle用户实体延伸FOS\UserBundle\Model它实现GroupableInterface。所以你的用户类已经有组方法getGroups, hasGroup($name), addGroup(GroupInterface $group), removeGroup(GroupInterface $group)。供参考,请看这里https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Model/User.php

如何将角色分配给组?

$em = $this->getDoctrine()->getEntityManager(); 

$group = new Group(); 
$group->setRoles(array()); 
$group->addRole('ROLE_ACTOR'); 
$em->persist($group); 
$em->flush(); 

你要实现你自己的角色分配,fosuserbundle没有这个预定义的形式。

+0

谢谢,这是做到了。 – cbaltatescu 2013-02-27 21:18:51

+0

如果 - 在我的情况下 - 我有群组关系 - > oneToMany-> User,我有一个特定的用例?我不能这样,我该怎么办? – krachleur 2017-07-26 10:21:08