我正在使用FOSUserBundle和Group选项。 注册工作。创建小组也是有效的。 如果我创建2个组,admin和client,并且手动添加:1:{i:0; s:10:“ROLE_ADMIN”;}到fos_group表中的admin组,然后在fos_user_user_group中进行MANULLY设置和输入用户进入管理员组,使用该用户登录将能够以管理员身份登录。
然而,这种方法显然存在一些缺点。 我现在可以使用什么来将用户添加到组中?使用promote命令行选项只会将角色添加到该用户但在fos_user表中,并且因为我正在使用组,所以我怀疑不再使用fos_user表的roles列。如果它仍然有用,我如何以编程方式将用户分配给组?
我的另一个重要问题是如何为群组分配角色。也许我没有得到关于整个群体想法的东西,但我本来希望能够在创建时为群组添加角色,但“新”形式只询问群组名称并且没有似乎存在与用户提升命令相当的组。
谢谢。
答案 0 :(得分: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没有预定义的表单。