Bonjour les amis,

Je viens à vous car j'ai un petit problème dont je ne comprend pas l'origine.

J'ai une vue à qui qui un bouton qui pointe vers une méthode à laquelle le bouton lui passe 2 paramètres (à la ligne 15)

{% extends "base.html.twig" %}
{% block body %} 
    <h1 class="mt-4">Choisissez le groupe auquel vous voulez inviter</h1>
    <div class="text-center">
    <div class="row mt-4 text-center">
        {% for groupe in groupes_perso %}
            <div class="col-md-4">
            <div class="card mt-2" style="width: 18rem;">
                <img src="{{asset('home/Infermiere_africaine.jpg')}}" class="card-img-top" alt="...">
                <div class="card-body">
                    <h5 class="card-title">{{groupe.nom}}</h5>
                    <p>Nombre de membres : 6</p>
                    <p>Id n° {{groupe.id}}</p>
                    <a href="{{path('envoie_invitation_groupe', {'id_groupe': groupe.id, 'invite': invite})}}" class="btn btn-success">Inviter</a>
                </div>
                </div>
            </div>
        {% endfor %}
    </div>
    </div>
{% endblock %}

Une fois dans le controller, la méthode qui est associé à la route "envoie_invitation_groupe", je dois pouvoir récupérer deux paramètres
id_groupe et id_invite

Voici le code du controller

/**
 * Cette méthode envoie l'invitation à rejoindre le groupe.
 *
 * @Route("/envoie_invitation_groupe/{id_invite, id_groupe}", name="envoie_invitation_groupe")
 *
 */
public function envoieInvitationGroupe($id_invite, $id_groupe){
    $idInvite = $id_invite;
    $invite = $this->getDoctrine()->getRepository(User::class)->find($idInvite);

    $idGroupe = $id_groupe;
    $groupe = $this->getDoctrine()->getRepository(Groupe::class)->find($idGroupe);

    $invitation = new InvitationGroupe();

    $em = $this->getDoctrine()->getManager();
    $invitation
                ->setInvitationDe($this->getUser())
                ->setInvitationPour($invite)
                ->setAccepte(false)
                ->setBloque(false)
                ->setGroupe($groupe);
    $em->persist($invitation);
    $em->flush();
    return $this->redirectToRoute('profils');
}

Comment je fais pour envoyer 2 paramètres aux controller et les récupérer ?

Symfony me renvoie cette erreur

Controller "App\Controller\User\AdminUserGroupeController::envoieInvitationGroupe()" requires that you provide a value for the "$id_invite" argument. Either the argument is nullable and no null value has been provided, no default value has been provided or because there is a non optional argument after this one.

2 réponses


Devdeb22
Auteur

En faite cet erreur, je l'avais faite après avoir essayé plusieurs solutions, sans succès.

J'ai rectifié le code, mais le problème persiste toujours.

J'ai toutefois contourné le problème d'enregistrement de l'invitation en la faisant en 2 étapes.

Et en ne passant qu'un seul paramètre à la fois au controleur.

Apparemment, on ne peut passer plus d'un paramètre au controleur, ou c'est peut-être moi qui n'a pas trouvé la solution.

Si quelqu'un à une réponse à ce problème, je la veux bien. Elle pourra toujours me servir pour d'autres occasions.

Devdeb22
Auteur

J'avais déjà éssayé, il me semblait que ça ne fonctionnai pas.

Je vais essayer avec une nouvelle methode et je te dirai.