首页 文章

FOSUserBundle,团体和注册表

提问于
浏览
2

这应该是这么简单,但我有一天 .

(我正在使用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 回答

  • 3

    找到它,它与getGroup和setGroup无关 .

    错误是用户角色和组角色合并时的错误 . 当我因某种原因设置组时,它没有将内容作为数组存储在我的Group表中 . 因此它无法将它们组合在一起 .

    在“组”表中对角色字段进行排序,现在可以正常工作 .

    希望将来帮助某人 .

相关问题