Bonjour,
Je récupère les données d'une entité 'Restaurant' qui a une relation OneToMany avec l'entité 'Menu' qui a elle même une relation OneToMany avec l'entité 'Composante'. Je souhaite afficher dans un panel les données du restaurant ainsi que ses menus avec les composants dans un autre panel toujours sur la même page..
Ici ma fonction d'affichage tiré du controller RestaurantController
Une partie de mon Template show.html.twig.
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 #[Route('/restaurant/{slug}', name: 'restaurant.show', methods: ['GET', 'POST'])] public function show(Restaurant $restaurant, ComposanteRepository $compRepo, Request $request, EntityManagerInterface $manager, PaginatorInterface $paginator) { // dd($request); $form = $this->createForm(RestaurantType::class, $restaurant); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { $restaurant = $form->getData(); $manager->persist($restaurant); $manager->flush(); $this->addFlash( 'success', 'Votre établissement a été modifié avec success 🙂' ); return $this->redirectToRoute('restaurant'); } $composantes = $compRepo->findAll(); $composantes = $paginator->paginate( $compRepo->findAll(), $request->query->getInt('page', 1), /*page number*/ 6 /*limit per page*/ ); return $this->render( 'restaurant/show.html.twig', [ 'composantes' => $composantes, 'restaurant' => $restaurant, 'form' => $form->createView() ] ); }
Ce que je veux
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
45
46
47
48
49
50
51
52
53
54
55
56 <div class="tab-pane fade" id="profile" role="tabpanel" aria-labelledby="profile-tab"> <a href="{{path('repas.add', { id: restaurant.id })}}" class="btn btn-primary"> ➕ Ajouter un repas </a> {% for menu in restaurant.menus %} <p class="">{{ menu.name }}</p> {% if not composantes.items is same as([]) %} <div class="my-5"> <div class="shadow-4 rounded-5 overflow-hidden"> <table class="table align-middle mb-0 bg-white"> <thead class="bg-light"> <tr> <th>Nom</th> <th>Adresse</th> <th>Actions</th> </tr> </thead> <tbody> {% for composante in menu.composantes %} <tr> <td> <div class="d-flex align-items-center"> <div class="ms-4"> <p class="fw-bold mb-1">{{composante.libelle_comp}}</p> </div> </div> </td> <td> <p class="fw-normal mb-1">{{composante.prix_unitaire}}</p> </td> <td> <p class="fw-normal mb-1">{{composante.poids_unitaire}}</p> </td> </tr> {% endfor %} </tbody> </table> </div> </div> {# display navigation #} <div class="navigation d-flex justify-content-center mt-2"> {{ knp_pagination_render(composantes) }} </div> {% else %} <h4> Il n'y a pas de restaurant enregistré</h4> {% endif %} {% endfor %} </div>
Je veux afficher sur mon panel dans la vue le 'Name' du menu et un tableau avec les composantes qui le compose
Ce que j'obtiens
Quand je boucle seulement sur les menus sans les composantes je n'ai pas d'erreur mais des que j'utilise la boucle for sur les composantes j'obtiens cette erreur :
Neither the property "libelle_comp" nor one of the methods "libelle_comp()", "getlibelle_comp()"/"islibelle_comp()"/"haslibelle_comp()" or "__call()" exist and have public access in class "App\Entity\Composante".
Je ne sais pas si je suis très clair, n'hésitez pas a me reprendre c'est la première fois que je poste ici.
Merci d'avance à ceux qui prendront le temps de me répondre.
Partager