Post

Symfony – Les paramètres de route

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.

This post is licensed under CC BY 4.0 by the author.