L3 Info : PHP et Applications Web
 
◃  Ch. 13 Symfony 7.4  ▹
 

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>'
        );
    }