Bonjour,

Dans un path je cherche à récupérer l'id d'une donnée qui serait en dehors d'une boucle.

Sur ma vue, je cherche à supprimer une relation entre l'entité Publicity et Department (ManyToMany). Pour ce faire, je cherche à pointer sur l'id de chacun d'entre eux.

Sauf que je boucle sur les données de Department. Donc pour son id, pas de problème, mais pour Publicity ça me semble impossible.

Extrait de mon twig

<tbody>
                                {% for department in publicity.department %}
                                    <tr>
                                        <td>{{ department.name }}</td>
                                        <td>{{ department.postalCode }}</td>
                                        <td class="text-center">
                                            <form
                                                class="d-inline"
                                                method="post"

                                                action="{{
                                                    path('admin_publicity_departments_delete',

                                                        {# Biensur, impossible de récupérer publicity.id de cette façon #}
                                                        {'publicity': department.publicity.id},
                                                        {'department': department.id})
                                                }}"

                                                onsubmit="return confirm('Êtes-vous vraiment sûr de vouloir effacer cette ressource ?');">
                                            <button class="btn btn-danger"><i class="icon-bin"></i></button>
                                            </form>
                                        </td>
                                    </tr>
                                {% endfor %}
                                </tbody>

Mon controller de la Vue pour Publicity

#[Route('/show/{id}', name: 'admin_publicity_show', methods: ['GET'])]
    public function show(Publicity $publicity): Response
    {
        return $this->render('admin/publicity/show.html.twig', [
            'publicity' => $publicity,
        ]);
    }

Mon controller pour l'action de delete un Department

#[Route('/delete/publicity/{publicity}/department/{department}',
        name: 'admin_publicity_departments_delete',
        methods: ['DELETE'])]
    public function delete(
        Request $request,
        EntityManagerInterface $entityManager,
        Publicity $publicity,
        Department $department
    ): Response
    {
        $publicity->removeDepartment($department);
        $entityManager->flush();
        $this->addFlash('success', 'Le département a bien été supprimé');
        return $this->redirectToRoute('admin_publicity_show', ['id' => $publicity->getId()], Response::HTTP_SEE_OTHER);
    }

S'il manque des infos n'hésitez pas, je ne suis pas encore très bien habitué à expliquer mes problèmes par écris :P

2 réponses


gillesr
Réponse acceptée

Bonjour,

puisque publicity est déja passé à ton template, tu dois pouvoir récupérer son id en faisant simplement publicity.id

Bonjour,

J'ai compris, le problème venait de la manière dont je l'ai écrite:

action="{{  path('admin_publicity_departments_delete',{'publicity': publicity.id, 'department': department.id})  }}"

Ainsi, ça marche.