Les routes paramétrées
- Il est possible de gérer plusieurs routes au sein d'un même contrôleur :
// src/Controller/HelloWorldController.php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\Response;
class HelloWorldController extends AbstractController
{
#[Route('/HelloWorld')]
public function HelloWorldAction(): Response
{
return new Response(
'<!DOCTYPE html><html><body><h1>Hello World !</h1></body></html>'
);
}
#[Route('/HelloMister')]
public function HelloMisterAction(): Response
{
$lastName = 'Fournier';
return new Response(
'<!DOCTYPE html><html><body><h1>Hello Mister '.$lastName.' !</h1></body></html>'
);
}
}
- Mais ne souhaiter bonjour qu'à monsieur Fournier est un peu limité...
- Les routes peuvent être enrichies d'éléments variables apparaissant entre accolades
- Pour gérer les URLs du type
/HelloMister/*, les routes deviennent dynamiques :
#[Route("HelloMister/{lastName}")]
public function HelloMisterLastNameAction(string $lastName) : Response {
// la variable $lastName correspond à la partie variable de la route
return new Response(
'<!DOCTYPE html><html><body><h1>Hello Mister '.$lastName.' !</h1></body></html>'
);
}
- Rien n'empêche de manipuler plusieurs paramètres dans une route :
#[Route("Hello/{title}/{lastName}")]
public function HelloTitleAction(string $title, string $lastName) : Response {
return new Response(
'<!DOCTYPE html><html><body><h1>Hello '. "$title $lastName".' !</h1></body></html>'
);
}