2014-01-20 40 views
1

我在我的一個項目中使用了FOSUserBundle。Symfony2:Form throws「傳遞給Doctrine Common Collections ArrayCollection :: __ construct()的參數1必須是一個數組,對象給出」on submit

我已經建立了一個基於對象Employee(與RoleGroup有許多關係)的表單。

這裏是形式(的一部分):

$builder->add('groups', 'entity', array(
    'class' => 'MMAAuthBundle:RoleGroup', 
    'choices' => $this->groups, 
    'property' => 'name', 
    'label' => 'Groups', 
    'expanded' => true, 
    'attr' => array("multiple" => true) 
)); 

當我提交表單,我得到這個錯誤在Profiler:

at ErrorHandler ->handle ('4096', 'Argument 1 passed to Doctrine\Common\Collections\ArrayCollection::__construct() must be an array, object given, called in /home/mihai/intranet/vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php on line 528 and defined', '/home/mihai/intranet/vendor/doctrine/collections/lib/Doctrine/Common/Collections/ArrayCollection.php', '47', array()) 
in /home/mihai/intranet/vendor/doctrine/collections/lib/Doctrine/Common/Collections/ArrayCollection.php at line 47 

我怎樣才能讓形式返回ArrayCollection,而不是RoleGroup對象?

我剛纔this問題,但現在我卡在這裏。目前

回答

3

你的形式是一個多形式,因此通過單個RoleGroup對象,而不是RoleGroup對象數組到Collection的構造函數。

multiple選項 ...而不是HTML屬性。因此...

$builder->add('groups', 'entity', array(
// This would only render a multiple="true" inside the fields HTML tag 
'attr' => array("multiple" => true) 

...應該是...

$builder->add('groups', 'entity', array(
// multiple option not wrapped by attribute is correct 
"multiple" => true 
+0

謝謝你,就像一個魅力! – MihaiM

相關問題