У меня есть объект "produit" с этим отношением:
/**
* @var \stdClass
*
* @ORM\ManyToMany(targetEntity="ListeBundle\Entity\GarDegatEaux", cascade={"persist"})
* @ORM\JoinTable(name="produit_garDegatEaux",
* joinColumns={@ORM\JoinColumn(name="produit_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="garDegatEaux_id", referencedColumnName="id", unique=false)})
*/
private $garDegatEaux;
Тип формы, как показано ниже:
->add('garDegatEaux', CollectionType::class, array('entry_type' => GarDegatEauxType::class,
'allow_add' => true,
'allow_delete' => true,
//'by_reference' => false,
'prototype' => true,
'label' => 'Coefficients dégât des eaux',
'entry_options' => array('label' => 'Coefficients'),
'attr' => array('class' => 'collection')
))
Когда по ссылке установлено значение false, у меня возникает эта ошибка:
Ни свойство "garDegatEaux", ни один из методов "addGarDegatEau()"/"removeGarDegatEau()", "setGarDegatEaux()", "garDegatEaux()", "__set()" или "__call()" не существуют и не являются общедоступными. доступ в классе "DevisBundle\Entity\Produit".
Конечно, в моем объекте addGarDegatEau()"/"removeGarDegatEau()" и получить... существовать и иметь публичный доступ. У меня также есть функция построения с:
$this->garDegatEaux = new \Doctrine\Common\Collections\ArrayCollection();
Когда для параметра "by_reference" установлено значение true, ошибки нет, но для коллекции ничего не отправляется. И когда я сбрасываю форму перед сохранением, в ArrayCollection ничего нет.
И когда "by_reference" прокомментирован, ошибки нет, но ничего не сохраняется и для ArrayCollection.
Мой контроллер:
public function creerProduitAction(Request $request) {
$produit = new Produit;
$formProduit = $this->createForm(ProduitType::class, $produit);
$formProduit->handleRequest($request);
if ($formProduit->isValid() && $formProduit->isSubmitted()) {
$em = $this->getDoctrine()->getManager();
$em->persist($produit);
$em->flush();
}
return $this->render('AdminBundle:Produit:creerProduit.html.twig', array(
'formProduit' => $formProduit->createView()
));
}
Я использовал коллекцию с Symfony 2.7, и этот процесс работал. Я использую Symfony 2.8 атм. Я не понимаю, почему коллекции не сохраняются.