I'm learning Symfony 2 and I got the following error when I submit a form:
Catchable Fatal Error: Argument 1 passed to Doctrine\Common\Collections\ArrayCollection::__construct() must be of the type array, object given, called in C:\xampp\htdocs\ppe2\vendor\doctrine\orm\lib\Doctrine\ORM\UnitOfWork.php on line 555 and defined
Here is my code :
Controller :
public function ajouterAction(Request $request){ $sponsor = new Sponsor(); $formulaire = $this->createForm(new SponsorType(), $sponsor)->add('Ajouter', 'submit'); if ($formulaire->handleRequest($request)->isValid()) { $em = $this->getDoctrine()->getManager(); $em->persist($sponsor); $em->flush(); $request->getSession()->getFlashBag()->add('notice', 'Le sponsor a bien été modfié !'); return $this->redirect($this->generateUrl('ffe_sponsor_voir', array('id' => $sponsor->getId()))); } return $this->render('FFESponsorBundle:Sponsor:ajouter.html.twig', array( 'formulaire' => $formulaire->createView(), )); }
My form type SponsorType :
public function buildForm(FormBuilderInterface $builder, array $options) { $builder ->add('nom', 'text') ->add('rue', 'text') ->add('codePostal', 'text') ->add('ville', 'text') ->add('telephone', 'text') ->add('mail', 'text') ->add('nomRepresentant', 'text') ->add('typeSponsor', 'entity', array( 'class' => 'FFESponsorBundle:TypeSponsor', 'property' => 'nom', 'multiple' => true )) ; }
My typeSponsor and Sponsor entities are linked by a ManyToMany relation.
Any idea what's wrong?
UPDATE :
This is my entity :
<?php namespace FFE\SponsorBundle\Entity; use Doctrine\ORM\Mapping as ORM; /** * Sponsor * * @ORM\Table() * @ORM\Entity(repositoryClass="FFE\SponsorBundle\Entity\SponsorRepository") */ class Sponsor { /** * @var integer * * @ORM\Column(name="id", type="integer") * @ORM\Id * @ORM\GeneratedValue(strategy="AUTO") */ private $id; /** * @var string * * @ORM\Column(name="nom", type="string", length=255) */ private $nom; /** * @var string * * @ORM\Column(name="rue", type="string", length=255) */ private $rue; /** * @var string * * @ORM\Column(name="codePostal", type="string", length=5) */ private $codePostal; /** * @var string * * @ORM\Column(name="ville", type="string", length=45) */ private $ville; /** * @var string * * @ORM\Column(name="telephone", type="string", length=10) */ private $telephone; /** * @var string * * @ORM\Column(name="mail", type="string", length=255) */ private $mail; /** * @var string * * @ORM\Column(name="nomRepresentant", type="string", length=45) */ private $nomRepresentant; /** * @ORM\ManyToMany(targetEntity="FFE\SponsorBundle\Entity\TypeSponsor", cascade={"persist"}) */ private $typeSponsor; /** * Get id * * @return integer */ public function getId() { return $this->id; } /** * Set nom * * @param string $nom * @return Sponsor */ public function setNom($nom) { $this->nom = $nom; return $this; } /** * Get nom * * @return string */ public function getNom() { return $this->nom; } /** * Set rue * * @param string $rue * @return Sponsor */ public function setRue($rue) { $this->rue = $rue; return $this; } /** * Get rue * * @return string */ public function getRue() { return $this->rue; } /** * Set codePostal * * @param string $codePostal * @return Sponsor */ public function setCodePostal($codePostal) { $this->codePostal = $codePostal; return $this; } /** * Get codePostal * * @return string */ public function getCodePostal() { return $this->codePostal; } /** * Set ville * * @param string $ville * @return Sponsor */ public function setVille($ville) { $this->ville = $ville; return $this; } /** * Get ville * * @return string */ public function getVille() { return $this->ville; } /** * Set telephone * * @param string $telephone * @return Sponsor */ public function setTelephone($telephone) { $this->telephone = $telephone; return $this; } /** * Get telephone * * @return string */ public function getTelephone() { return $this->telephone; } /** * Set mail * * @param string $mail * @return Sponsor */ public function setMail($mail) { $this->mail = $mail; return $this; } /** * Get mail * * @return string */ public function getMail() { return $this->mail; } /** * Set nomRepresentant * * @param string $nomRepresentant * @return Sponsor */ public function setNomRepresentant($nomRepresentant) { $this->nomRepresentant = $nomRepresentant; return $this; } /** * Get nomRepresentant * * @return string */ public function getNomRepresentant() { return $this->nomRepresentant; } /** * Set typeSponsor * * @param \FFE\SponsorBundle\Entity\TypeSponsor $typeSponsor * @return Sponsor */ public function setTypeSponsor(\FFE\SponsorBundle\Entity\TypeSponsor $typeSponsor = null) { $this->typeSponsor = $typeSponsor; return $this; } /** * Get typeSponsor * * @return \FFE\SponsorBundle\Entity\TypeSponsor */ public function getTypeSponsor() { return $this->typeSponsor; } }