Sélectionner une entité dans un formulaire
Bonjour à tous,
Pour mon site internet, j'ai du réaliser un "ManyToMany" à la main car mon entité reçoit des champs personnalisés. De plus, le "ManyToMany" pointe vers lui-même (self-referencing). Pour expliquer simplement : j'ai une page permettant d'ajouter des modules (ça, ça fonctionne) et quand j'ajoute des modules, je peux sélectionner des modules précédemment enregistrés pour les lier. :)
Voici mon entité module AdministrationBundle\Entity\Module :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
...
/**
* @ORM\OneToMany(targetEntity="AdministrationBundle\Entity\ModuleModuleLie", mappedBy="moduleLie", cascade={"persist"})
*/
private $modules;
public function addModule(\AdministrationBundle\Entity\ModuleModuleLie $module)
{
$this->modules[] = $module;
$module->setModule($this);
return $this;
}
public function removeModule(\AdministrationBundle\Entity\ModuleModuleLie $module)
{
$this->modules->removeElement($module);
}
... |
Voici mon entité module AdministrationBundle\Entity\ModuleModuleLie (la table de jointure) :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
|
...
/**
* @ORM\ManyToOne(targetEntity="AdministrationBundle\Entity\Module")
*/
protected $module;
/**
* @ORM\ManyToOne(targetEntity="AdministrationBundle\Entity\Module", inversedBy="modules")
*/
protected $moduleLie;
public function setModule(\AdministrationBundle\Entity\Module $module)
{
$this->module = $module;
}
public function getModule()
{
return $this->module;
}
public function setModuleLie(\AdministrationBundle\Entity\Module $module)
{
$this->moduleLie = $module;
}
public function getModuleLie()
{
return $this->moduleLie;
}
... |
Enfin, j'ai mon formulaire qui s'affiche correctement en listant notamment les modules préalablement enregistrés :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
$builder
...
->add('modules', 'entity', array(
'class' => 'AdministrationBundle\Entity\Module',
'property' => 'libelle',
'multiple' => true,
'expanded' => true,
'required' => true,
'label' => 'Module(s) importé(s)'
)
); |
Cependant, lors de la validation j'ai cette erreur que je ne parviens pas à résoudre :
" Found entity of type AdministrationBundle\Entity\Module on association AdministrationBundle\Entity\Module#modules, but expecting AdministrationBundle\Entity\ModuleModuleLie "
Quelqu'un a une idée ?
Merci d'avance :)