App\Entity\Groupe object not found by the @ParamConverter annotation.

Ce sujet est résolu
Default
,

Bonjour la communauté des devs,
Je reviens vers vous en ce beau lundi car j'ai un nouveau problème :D

Voici le topo, on se trouve sur une page qui détaille les données d'une entreprise ( Company )et on peut également, via cette page, y ajouter un groupe, le podifier ou le supprimer.
L'ajout du groupe se passe très. Par contre quand je veux modifier ce groupe, Symfony m'affiche cette erreur :

App\Entity\Groupe object not found by the @ParamConverter annotation.

Le lien du template qui permet d'ajouter un groupe et de supprimer et de modifier :

<td class="d-flex justify-content-around align-items-center">
                            <a href="{{ path('groupe.edit', {'id':company.id, 'group_id':group.id}) }}" class="m-2"><i class="gg-pen"></i></a>
                            {% if is_granted('ROLE_ADMIN') %}
                            <a href="{{ path('groupe.delete', {'id':company.id, 'group_id':group.id}) }}" class="m-2"><i class="gg-trash text-danger"></i></a>
                            {% endif %}
                        </td>

Maintenant le cotroller poiur faire un edit de ce groupe :

/**
     * @Route("/company/{id}/editGroupe/{group_id}", name="groupe.edit")
     * @IsGranted("ROLE_ADMIN")
     */
    public function editGroup(Company $compagny, Groupe $group, Request $request, EntityManagerInterface $emi)
    {

        $form = $this->createForm(FormAddGroupType::class, $group);
        $form->handleRequest($request);

        if($form->isSubmitted() && $form->isValid())
        {
            $emi->flush();
            $this->addFlash('success', 'Le groupe a bien été modifié');

            return $this->redirectToRoute('company.show', ['id' => $company->getId()]);
        }

        return $this->render('company/editGroup.html.twig', [
            'form' => $form->createView()
        ]);
    }

Pour infos, dans le lien qui renvoit vers la méthode editGroup(), j'envoie l'id de la company ainsi que l'id du groupe.

Merci pour votre aide et au plaisir de vous aider également

4 Réponse

Default
,

Re,

Petite erreur ;)

Company $compagny <> $company

Default
,

Bonjour,

Il semblerait que le soucis soit dans la route et plus précisement sur group_id, doctrine converter ne sait pas a quelle entity l'associer.

Afin de l'aider, cette annotation devrait faire l'affaire:
@ParamConverter("group", options={"id" = "group_id"})

https://symfony.com/doc/current/bundles/SensioFrameworkExtraBundle/annotations/converters.html#doctrineconverter-options

Cordialement,

Default
,

Merci Yann25, cela a bien fonctionné, ça affiche bien le formulaire pour éditer le groupe.
Mais une fois que je valide l'edit, une nouvelle erreur apparaît au niveau de ma redirection de route :

Notice: Undefined variable: company

Ma redirection :

if($form->isSubmitted() && $form->isValid())
        {
            $emi->flush();
            $this->addFlash('success', 'Le groupe a bien été modifié');

            return $this->redirectToRoute('company.show', ['id' => $company->getId()]);
        }

Pur infos, ça fonctionne très bien dans d'autres exemples
Ma variable $company est bien définie dans les paramètres de la méthode ainsi que dans la route, nn ?

Default
,

Oula oui une erreur de débutant ahah
Merci en tout cas :D