Route sans argument
Nous avons vu dans la section précente comment créer une route simple, c'est à dire sans argument.
Route avec paramètre
Configuration de la route
// fichier src/Controller/PlayerController.php /** * @Route("/player/{battletag}", name="player_show") */ public function show() {
Le paramètre
battletag
fait partie du chemin. Il capturera toutes les URL en
/player/*
. Par exemple :
- /player/4
- /player/toto
Par défaut, les paramètres sont obligatoires.
Récupération du paramètre dans le contrôleur
<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\Routing\Annotation\Route; use Symfony\Component\HttpFoundation\Response; class PlayerController extends Controller { /** * @Route("/player/{battletag}", name="player_show") */ public function show($battletag) { return new Response("Valeur saisie : ".$battletag."."); } }
Utilisation extensible
On peut avoir plusieurs arguments dans l'url
// fichier src/Controller/PlayerController.php /** * @Route("/diablo/{type}/{nomDocument}.{extension}", name="player_show") */ public function file($type, $nomDocument, $extension) {
L'association des variables entre route et contrôleur se fait par nom (et non par ordre des arguments).
Obtenir des informations
Vous pouvez obtenir des informations sur le routage dans le profiler (la barre en bas en mode développement).
Il est aussi possible de lister l'ensemble des routes grâce à la console :
$ php bin/console debug:router