这应该是这么简单,但我有一天 .
(我正在使用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 \中的数组在ErrorHandler-> handle的C:\ Users \ ppounder \ Documents \ Development \ KP \ htdocs \ symfony \ kp \ vendor \ friendsofsymfony \ user-bundle \ FOS \ UserBundle \ Model \ User.php第279行中的User.php第279行( '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)))
看着 table ,一切都如我所料 . 添加用户,组和用户列在连接表中 .
我的用户实体中没有getter和setter用于我的组,因为FOSUserBundle没有提到任何需要 . 但是我尝试在我的User实体中将以下内容添加到我的构造中:
public function __construct()
{
parent::__construct();
// your own logic
$this->groups = new ArrayCollection();
}
但仍然没有运气 . 如上面的错误所示,第二个参数是一个对象 .
仅供参考 - 我的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;
}
1 回答
找到它,它与getGroup和setGroup无关 .
错误是用户角色和组角色合并时的错误 . 当我因某种原因设置组时,它没有将内容作为数组存储在我的Group表中 . 因此它无法将它们组合在一起 .
在“组”表中对角色字段进行排序,现在可以正常工作 .
希望将来帮助某人 .