Symfony2 FOSUserBundle注册角色异常


Symfony2 FOSUserBundle Registration Role Exception

我在Symfony2中很新,我尝试使用FOSUserBundle,大部分工作正常,但当我尝试注册时,我总是得到相同的结果:

Warning: Invalid argument supplied for foreach() in /var/www/own/envelope/vendor/bundles/FOS/UserBundle/Model/User.php line 372
500 Internal Server Error - ErrorException

在堆栈跟踪中,我可以看到这是由角色引起的空数组,但我真的不知道在哪里可以找到它,或者我应该添加到配置或其他地方。

我没有覆盖任何控制器,只有模板注册,但我认为我使用合适的一个。

我从自定义用户类中删除了getGroups和addGroups方法,这就解决了问题。

好的,我确实发现了一个问题-我没有为Group添加任何Role。所以在FOSUserBundle中,每个Group必须有一个Role,就是这样。

我不确定我的问题是否完全相同,但至少它是相似的。错误信息是相同的。经过几个小时的搜索,我终于明白是哪里出了问题,回头看,这实际上是一个明显的错误。

我唯一要做的就是将下面这行添加到用户类的__constructor函数中:
$this->groups = new 'Doctrine'Common'Collections'ArrayCollection();

这可能不是op的解决方案,但也许它可以帮助别人!

我得到了完全相同的错误,但我通过构造函数重载用户类

解决了这个问题
 public function __construct(){    
     $this->groups = new 'Doctrine'Common'Collections'ArrayCollection();
     return parent::__construct();
 }