Dans Symfony, une route associe une URL à une méthode de contrôleur. On la déclare avec l'attribut #[Route].
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
final class HelloController extends AbstractController
{
#[Route('/hello/{name}', name: 'app_hello')]
public function hello(string $name): Response
{
return $this->render('hello.html.twig', ['name' => $name]);
}
}
Ce qu'il faut retenir
- Le contrôleur reçoit des paramètres (
{name}dans l'URL) et renvoie toujours uneResponse. $this->render()appelle un template Twig et lui passe des variables.- Le nom de la route (
app_hello) sert à générer des liens :path('app_hello', {name: 'Ada'})dans Twig.
Outils de la console
symfony serve # lance le serveur de développement
bin/console debug:router # liste toutes les routes
bin/console make:controller # génère un contrôleur
Bonnes pratiques
- Un contrôleur fin : il lit la requête, appelle un service, renvoie la réponse.
- La logique métier va dans des services, injectés par le constructeur.
- Valide toujours les données qui viennent de l'utilisateur.