Bonjour,
Actuellement en train de développer un forum, je bloque au niveau de la création d'un sujet.
J'ai 4 entités : Catégorie, Sujet, Post et User.
Sujet a une relation OneToMany avec Post (Un sujet peut contenir plusieurs posts, Un post ne peut être que dans un seul sujet)
J'ai crée un formulaire avec make:form en lui indiquant l'entité Sujet, j'ai rajouté dessus une liste de choix des catégories avec un EntityType et le titre du Sujet.
Jusque là tout va bien. Sauf que je ne sais pas comment choisir la propriété content de l'entité Post pour l'insérer dans le formulaire.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 $builder ->add('categorie', EntityType::class, [ 'class' => Categorie::class, 'choice_label' => 'title' ]) ->add('title', TextType::class, [ 'label' => false, 'constraints' => [ new NotBlank([ 'normalizer' => 'trim' ]), ], ])
Dans mon entité Sujet j'ai un tableau de Collection Post avec getPosts et addPost et removePost
Je vois pas comment jouer avec ca pour pouvoir récupérer le content de Post avec son TextAreaType.
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 /** * @return Collection|Post[] */ public function getPosts(): Collection { return $this->posts; } public function addPost(Post $post): self { if (!$this->posts->contains($post)) { $this->posts[] = $post; $post->setSujet($this); } return $this; } public function removePost(Post $post): self { if ($this->posts->removeElement($post)) { // set the owning side to null (unless already changed) if ($post->getSujet() === $this) { $post->setSujet(null); } } return $this; }
J’espère ne pas avoir été trop brouillon.
EDIT : En ajoutant un simple champ add avec la propriété posts de l'entité Sujet
et que je tente de valider le formulaire il m'affiche ca :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 ->add('categorie', EntityType::class, [ 'class' => Categorie::class, 'choice_label' => 'title' ]) ->add('title', TextType::class, [ 'label' => false, 'constraints' => [ new NotBlank([ 'normalizer' => 'trim' ]), ], ]) ->add('posts', TextareaType::class, [ ]);
Vous remerciant d'avance






Répondre avec citation

Partager