Symfony – Les paramètres de route
Cours 2 — Les paramètres de route
Présentation
Les paramètres de route permettent de transmettre des informations depuis l’URL vers le contrôleur.
Grâce à eux, une même route peut servir à afficher des patients différents, des séjours différents ou des avis différents.
Schéma général
1
2
3
4
5
6
7
URL
↓
Route
↓
Extraction des paramètres
↓
Contrôleur
1. Paramètre simple
1
2
3
4
5
#[Route('/patient/{id}', name: 'patient_show')]
public function show(int $id): Response
{
return new Response("Patient : $id");
}
URL :
1
/patient/12
Résultat :
1
Patient : 12
Comment lire cette route ?
1
/ patient / {id}
Signifie :
1
2
La partie fixe est : patient
La partie variable est : id
Symfony récupère automatiquement la valeur.
2. Plusieurs paramètres
1
2
3
4
5
#[Route('/sejour/{id}/{annee}', name: 'sejour_show')]
public function show(int $id, int $annee): Response
{
return new Response("$id - $annee");
}
URL :
1
/sejour/15/2026
Résultat :
1
15 - 2026
Ce que Symfony fait
Symfony transforme :
1
/sejour/15/2026
en :
1
show(15, 2026)
3. Paramètre texte
1
2
3
4
5
#[Route('/ville/{nom}', name: 'ville_show')]
public function show(string $nom): Response
{
return new Response($nom);
}
URL :
1
/ville/Anvers
Résultat :
1
Anvers
4. Contraindre un paramètre
Par défaut Symfony accepte tout.
On peut limiter aux nombres :
1
2
3
4
#[Route(
'/patient/{id<\d+>}',
name: 'patient_show'
)]
Valide :
1
/patient/12
Invalide :
1
/patient/toto
Pourquoi utiliser une contrainte ?
Pour éviter qu’une URL incorrecte arrive dans le contrôleur.
Symfony bloque l’accès avant même l’exécution du code.
5. Valeur par défaut
1
2
3
4
5
#[Route(
'/annee/{annee}',
name: 'annee_show',
defaults: ['annee' => 2026]
)]
URL :
1
/annee
Résultat :
1
2026
Exemple inspiré de SoigneMoi
1
2
#[Route('/patient/{id}', name: 'patient_show')]
public function show(int $id)
URL :
1
/patient/25
Symfony appelle :
1
show(25)
Puis le contrôleur pourra demander :
1
$patientRepository->find(25);
pour récupérer le patient.
Ce que Symfony fait automatiquement
Symfony :
- lit l’URL ;
- détecte les paramètres ;
- vérifie les contraintes ;
- transmet les valeurs au contrôleur.
Ce que le développeur écrit
Le développeur choisit :
- le nom du paramètre ;
- son type ;
- les contraintes éventuelles ;
- la logique métier.
À retenir
Les paramètres de route permettent :
- d’identifier un enregistrement ;
- de transmettre une information au contrôleur ;
- de réutiliser une même route avec plusieurs valeurs.
Schéma mental :
1
2
3
4
5
URL
↓
Paramètre
↓
Contrôleur
Erreurs fréquentes
Nom différent
Incorrect :
1
2
3
#[Route('/patient/{id}')]
public function show(int $numero)
Correct :
1
2
3
#[Route('/patient/{id}')]
public function show(int $id)
Oublier les accolades
Incorrect :
1
'/patient/id'
Correct :
1
'/patient/{id}'
Conclusion
Les paramètres de route permettent à Symfony de transmettre des informations depuis l’URL vers le contrôleur.
Ils sont utilisés partout dans les applications Symfony, notamment pour afficher, modifier ou supprimer un enregistrement précis.