Bonjour à tous, je suis confronté à un cas particulier pour un formulaire dynamique sur Symfony.
J'ai plusieurs entités: Parcsimmobilier.php, Ensembles.php, Batiments.php et Zonestechnique.php.
Un Parcs peut avoir plusieurs ensembles (ManyToOne), un ensemble peut avoir plusieurs Batiments (ManyToOne) et un batiment peut avoir plusieurs Zonestechnique (ManyToOne).
Je dois créer un formulaire dynamique selon ces relations, mais lors de la création d'une zone technique, je m'explique:
1- La route appel un formulaire qui fait apparaître dans un select la liste de tous les parcs immobiliers
2- Une fois mon parc choisit, une liste déroulante apparaît et cette liste est un select qui permet de choisir un ensemble appartenant au parc choisit à la base
3- Une fois l'ensemble sélectionné, deux choix s'offre à l'utilisateur suivant la catégorie de la zone technique. Donc une fois l'ensemble sélectionne, les catégories de zones techniques apparaissent dans multiple select. Dans ces catégories, il y a la catégorie extérieure, si elle est sélectionné, une liste déroulante des bâtiments apparaît mais grisé avec la valeur "aucun". Par contre si la catégorie choisit n'est pas exterieure, une liste déroulante de tous les bâtiments appartenant à l'ensemble auparavant sélectionné apparaît.
4- Une fois le batiments choisit (donc soit un bâtiment, soit la valeur "aucun"), le reste du formulaire pour la zone technique apparaît.
Le problème, c'est que mon entité Zonestechnique.php n'est pas en relation avec Parcsimobilier.php ou Ensembles.php. Cette entité est juste en relation avec Batiments.php. Je vous avouerai ne pas trop savoir comment procéder.
Voici le code pour Parcsimmobilier.php:
Le code pour Ensembles.php:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 class Parcsimmobilier { /** * @var integer * * @ORM\Column(name="id", type="integer", nullable=false) * @ORM\Id * @ORM\GeneratedValue(strategy="IDENTITY") */ private $id; /** * @var string * * @ORM\Column(name="nom", type="string", length=150, nullable=false) */ private $nom; /** * @var \Doctrine\Common\Collections\Collection * * @ORM\OneToMany(targetEntity="Ensembles", mappedBy="parcsimmobilier") */ private $ensembles;
Le code pour mon entité Batiments.php:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 class Ensembles { /** * @var integer * * @ORM\Column(name="id", type="integer", nullable=false) * @ORM\Id * @ORM\GeneratedValue(strategy="IDENTITY") */ private $id; /** * @var string * * @ORM\Column(name="nom", type="string", length=150, nullable=false) */ private $nom; /** * @var \Parcsimmobilier * * @ORM\ManyToOne(targetEntity="Parcsimmobilier") * @ORM\JoinColumns({ * @ORM\JoinColumn(name="parcsimmobilier_id", referencedColumnName="id") * }) */ private $parcsimmobilier;
Et enfin pour Zonestechnique.php:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 class Batiments { /** * @var integer * * @ORM\Column(name="id", type="integer", nullable=false) * @ORM\Id * @ORM\GeneratedValue(strategy="IDENTITY") */ private $id; /** * @var string * * @ORM\Column(name="nom", type="string", length=150, nullable=true) */ private $nom; /** * @var \Ensembles * * @ORM\ManyToOne(targetEntity="Ensembles") * @ORM\JoinColumns({ * @ORM\JoinColumn(name="ensembles_id", referencedColumnName="id") * }) */ private $ensembles;
J'ai essayé avec la doc ici mais je vous avoue que je ne sais pas vraiment comment procéder.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
33
34
35
36
37
38
39
40
41
42
43
44 class Zonestechnique { /** * @var integer * * @ORM\Column(name="id", type="integer", nullable=false) * @ORM\Id * @ORM\GeneratedValue(strategy="IDENTITY") */ private $id; /** * @var string * * @ORM\Column(name="nom", type="string", length=150, nullable=false) */ private $nom; /** * @var \Batiments * * @ORM\ManyToOne(targetEntity="Batiments") * @ORM\JoinColumns({ * @ORM\JoinColumn(name="batiments_id", referencedColumnName="id") * }) */ private $batiments; /** * @var \Doctrine\Common\Collections\Collection * * @ORM\ManyToMany(targetEntity="Categorieszonestechnique") * @ORM\JoinTable(name="zonestechnique_categorieszonestechnique", * joinColumns={ * @ORM\JoinColumn(name="zonestechnique_id", referencedColumnName="id") * }, * inverseJoinColumns={ * @ORM\JoinColumn(name="categorieszonestechnique_id", referencedColumnName="id") * } * ) */ private $categorieszonestechnique;
Merci d'avance.
Partager