这应该是如此简单,但我现在有一天。
(我正在使用Symfony 2.4.1)
我跟着Using Groups With FOSUserBundle写了这封信。我想允许用户在注册时选择一个组。因此,正如我所遵循的那样,我创建了“多对多”关系,并且有一个fos_user_user_group表来包含这些关系。
我也跟着Overriding Default FOSUserBundle Forms,以便我可以在注册表单中添加组字段以供选择。
遵循上述(不添加我自己的setGroups函数等),我得到以下错误
ContextErrorException:警告:array_merge():参数#2不是C:\ Users \ ppounder \ Documents \ Development \ KP \ htdocs \ symfony \ kp \ vendor \ friendsofsymfony \ user-bundle \ FOS \ UserBundle \中的数组Model \ User.php第279行
在C:\ Users \ ppounder \ Documents \ Development \ KP \ htdocs \ symfony \ kp \ vendor \ friendsofsymfony \ user-bundle \ FOS \ UserBundle \ Model \ User.php第279行 在ErrorHandler-> handle('2','array_merge():参数#2不是数组','C:\ Users \ ppounder \ Documents \ Development \ KP \ htdocs \ symfony \ kp \ vendor \ friendsofsymfony \ user -bundle \ FOS \ UserBundle \ Model \ User.php','279',array('roles'=> array(),'group'=> object(Group)))
看着桌子,一切都按照我的预期进行了。添加用户,组和用户列在连接表中。
我的用户实体中没有针对我的群组的getter和setter,因为FOSUserBundle没有提及任何需要。但是我尝试在我的用户实体中将以下内容添加到我的构造中:
public function __construct()
{
parent::__construct();
// your own logic
$this->groups = new ArrayCollection();
}
但仍然没有运气。如上面的错误所示,第二个参数是一个对象。
FYI - groups字段的FormType buildForm方法是:
$builder->add('groups', 'entity', array(
'class' => 'AcmeDemoBundle:Group',
'property' => 'name',
'expanded' => true,
'multiple' => true,
'required' => true,
'empty_value' => '--Select Group--'
));
任何帮助都将不胜感激。
当我尝试登录并将用户分配到一个或多个组时,也会发生此错误。因此,它必须与getGroups()函数(不在我的User实体中)有关。我必须要覆盖,但是如何?
如果我添加以下内容,则会删除错误,但会停止插入连接表
public function getGroups()
{
return $this->groups = new ArrayCollection;
}
答案 0 :(得分:3)
找到它,它与getGroup和setGroup无关。
错误是用户角色和组角色合并时的错误。当我因某种原因设置组时,它没有将内容作为数组存储在我的Group表中。因此,它无法将它们一起排列。
在“组”表中对角色字段进行排序,现在可以正常工作。
希望将来帮助某人。