2011-09-28 97 views
2

我很新的Symfony2中,i`ve試圖用FOSUserBundle,大部分的它工作正常,但是當我嘗試註冊我也總是得到相同的結果: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 

而且在堆棧跟蹤中,我可以看到這是導致與角色的空陣列,但我真的不知道在哪裏可以找到它或我應該添加到配置或其他地方。

我沒有重寫任何控制器,只有註冊模板,但我想我使用的是正確的。

感謝您的回答。

+0

我們在哪裏可以找到你的代碼?您是否嘗試過使用調試器來了解價值來自哪裏? – hakre

+0

你是否在你的具體用戶類中實現了一個構造方法,忘記調用'parent :: __ construct()'? – Problematic

+0

嗯,代碼是純粹的symfony與實施FOSUserBundle,所以它沒有什麼可以真正顯示。我沒有實現'parent :: __ construct()' –

回答

1

我從我的自定義用戶類中刪除了方法getGroups和addGroups,它解決了這個問題。

+0

我不認爲它解決了問題。您需要這些方法才能正確使用羣組嗎? –

1

好的,我確實發現了什麼問題 - 我沒有爲Group添加Role。所以在FOSUserBundle每個Group必須有一個Role,就是這樣。

+0

請說明。 –

+0

哪一部分完全不理解? –

1

我不確定我的問題是否完全相同,但至少它是相似的。錯誤消息是相同的。在搜尋了幾個小時後,我終於明白出了什麼問題,回頭看看它確實是一個明顯的錯誤。

我不得不做的唯一的事情是以下行添加到用戶類的__constructor功能:

$this->groups = new \Doctrine\Common\Collections\ArrayCollection(); 

它可能不是一直是OPERS解決方案,但也許它可以幫助別人!

1

我得到了完全相同的錯誤,但我解決了這個由用戶類的構造函數重載

public function __construct(){  
    $this->groups = new \Doctrine\Common\Collections\ArrayCollection(); 
    return parent::__construct(); 
}