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.