set multiple = 'false' в форме во многих отношениях symfony2

У меня есть отношение «многие ко многим» между двумя объектами A и B.

Поэтому, добавляя форму, чтобы добавить entityA в entityB , я делаю следующее:

 $builder ->add('entityAs', 'entity', array( 'class' => 'xxxBundle:EntityA', 'property' => 'name', 'multiple' => true, ));} 

И все в порядке.

Но в зависимости от типа поля entityA, я хочу иногда устанавливать «multiple» в false, поэтому я делаю следующее:

 if($type=='a'){ $builder ->add('entityAs', 'entity', array( 'class' => 'xxxBundle:entityA', 'property' => 'name', 'multiple' => true, ));} else { $builder ->add('entityAs', 'entity', array( 'class' => 'xxxBundle:entityA', 'property' => 'name', 'multiple' => false, )); } 

Это дает мне следующую ошибку:

 Catchable Fatal Error: Argument 1 passed to Doctrine\Common\Collections\ArrayCollection::__construct() must be an array, object given, called in C:\wamp\www\Symfony\vendor\doctrine\orm\lib\Doctrine\ORM\UnitOfWork.php on line 519 and defined in C:\wamp\www\Symfony\vendor\doctrine\common\lib\Doctrine\Common\Collections\ArrayCollection.php line 48 

Кто-нибудь может мне помочь?

Related of "set multiple = 'false' в форме во многих отношениях symfony2"

В EntityA у вас есть что-то вроде этого, не так ли?

 public function setEntitiesB($data) { $this->entitiesB = $data ; } 

Теперь, поскольку вы также можете получать одно значение вместо массива значений, вам нужно что-то вроде этого:

 public function setEntitiesB($data) { if ( is_array($data) ) { $this->entitiesB = $data ; } else { $this->entitiesB->clear() ; $this->entitiesB->add($data) ; } } 

я бы проверил значение entityA в контроллере и в зависимости от него создавал разные формы.

в контроллере:

 if ($entityA->getType() == 'a') { $form = new FormB(); // form with multiple true } else { $form = new FormA(); // form with multiple false }