Post

Symfony – Les redirections

Symfony – Les redirections

Cours 5 — Les redirections

Présentation

Une redirection permet d’envoyer automatiquement l’utilisateur vers une autre URL.

Au lieu d’afficher immédiatement une page, Symfony demande au navigateur d’aller consulter une nouvelle adresse.

Les redirections sont très utilisées après :

  • une connexion ;
  • une déconnexion ;
  • un ajout en base de données ;
  • une modification ;
  • une suppression.

Schéma général

1
2
3
4
5
6
7
8
9
Contrôleur
    ↓
Redirection
    ↓
Nouvelle URL
    ↓
Nouvelle Route
    ↓
Nouveau Contrôleur

1. Redirection simple

1
return $this->redirect('/accueil');

Ce code signifie :

1
Va sur l'URL /accueil

Ce qui se passe

1
2
3
4
5
6
7
8
9
Utilisateur
    ↓
/connexion
    ↓
Contrôleur
    ↓
redirect('/accueil')
    ↓
/accueil

Le navigateur effectue une nouvelle requête.


2. Redirection vers une route

C’est la méthode recommandée.

1
return $this->redirectToRoute('app_accueil');

Pourquoi ?

Supposons :

1
#[Route('/accueil', name: 'app_accueil')]

Si l’URL change plus tard :

1
#[Route('/home', name: 'app_accueil')]

La redirection continue de fonctionner.


Comment lire ce code ?

1
redirectToRoute('app_accueil')

Signifie :

1
2
Cherche la route app_accueil
et redirige vers son URL.

3. Redirection avec paramètre

Route :

1
#[Route('/patient/{id}', name: 'patient_show')]

Redirection :

1
2
3
4
5
6
return $this->redirectToRoute(
    'patient_show',
    [
        'id' => 25
    ]
);

Symfony génère :

1
/patient/25

Ce qui se passe

1
2
3
4
5
Route patient_show
    ↓
id = 25
    ↓
/patient/25

Exemple concret

Ajout d’un patient :

1
2
3
4
5
6
7
8
9
10
public function ajouter()
{
    ...
    return $this->redirectToRoute(
        'patient_show',
        [
            'id' => $patient->getId()
        ]
    );
}

Après l’enregistrement :

1
2
3
4
5
Création du patient
    ↓
Redirection
    ↓
Fiche du patient

Pourquoi utiliser une redirection ?

Sans redirection :

1
2
3
4
5
Utilisateur
    ↓
Actualise la page
    ↓
Le formulaire est envoyé une seconde fois

Avec redirection :

1
2
3
4
5
6
7
Formulaire
    ↓
Sauvegarde
    ↓
Redirection
    ↓
Nouvelle page

Le risque de double enregistrement est réduit.


À retenir

Une redirection :

  • n’affiche pas directement une page ;
  • demande au navigateur d’aller ailleurs ;
  • est souvent utilisée après une modification de données.

Schéma mental :

1
2
3
4
5
6
7
Action
 ↓
Redirection
 ↓
Nouvelle URL
 ↓
Nouvelle page

Conclusion

Les redirections sont omniprésentes dans les applications Symfony.

Quand tu lis un contrôleur et que tu vois :

1
return $this->redirectToRoute(...);

comprends immédiatement :

1
2
Ce contrôleur n'affiche pas une page.
Il envoie l'utilisateur vers une autre route.
This post is licensed under CC BY 4.0 by the author.