
Etape 1 : Définir une nouvelle route
Apprenez à définir une nouvelle route dans Symfony en utilisant les attributs. C'est la première étape essentielle pour rendre votre page accessible via une URL.
Qu'est-ce qu'une route et pourquoi est-elle indispensable ?
Dans le contexte de Symfony, une route est une règle qui associe une URL spécifique (le chemin que l'utilisateur tape dans son navigateur) à une portion de code de votre application qui sera chargée de générer la réponse pour cette URL. Plus précisément, une route fait le lien entre un motif d'URL et un contrôleur (une méthode d'une classe PHP).
Imaginez un grand bureau de poste avec de nombreux guichets. L'URL est comme l'adresse sur une enveloppe, et le système de routage est l'employé qui lit cette adresse et dirige l'enveloppe (la requête) vers le bon guichet (le contrôleur) pour traitement. Sans route, Symfony ne saurait pas quel contrôleur exécuter lorsqu'un utilisateur demande une page spécifique.
Définir une route est donc la toute première étape concrète pour rendre une nouvelle fonctionnalité ou une nouvelle page de votre site accessible. C'est la porte d'entrée que vous créez pour les utilisateurs. Chaque page publique de votre application web Symfony doit avoir au moins une route qui lui est associée.
Comment définir une route avec les attributs PHP ?
Dans les versions modernes de Symfony, la manière la plus courante et la plus pratique de définir des routes est d'utiliser les attributs PHP (disponibles depuis PHP 8.0). Anciennement, cela se faisait avec des annotations DocBlock, mais les attributs offrent une syntaxe plus propre et native à PHP. Un attribut est une forme de métadonnée que vous pouvez attacher à des classes, méthodes, propriétés, etc.
Pour définir une route, vous allez utiliser l'attribut Symfony\Component\Routing\Annotation\Route (ou plus simplement #[Route] après avoir importé la classe avec une instruction use) directement au-dessus de la méthode du contrôleur qui doit gérer cette route.
Voici la structure de base :
Analysons les éléments clés de cet attribut #[Route(...)] :
'/chemin-de-votre-page': C'est le chemin de l'URL. Si votre application est accessible àhttp://localhost:8000, alors cette page sera accessible àhttp://localhost:8000/chemin-de-votre-page. Choisissez des chemins clairs, descriptifs et en minuscules, avec des tirets pour séparer les mots (kebab-case).name: 'nom_de_la_route': C'est le nom de la route. Il s'agit d'un identifiant unique pour cette route dans toute votre application. Il est crucial pour générer des URLs vers cette page depuis d'autres endroits de votre code (par exemple, dans les templates Twig ou dans d'autres contrôleurs) de manière dynamique et robuste. La convention est d'utiliser des minuscules et des underscores (snake_case). Un nom de route bien choisi est explicite, par exempleapp_homepage,blog_post_show,contact_form_submit.
Exemple concret : Créer une route pour une page "A Propos"
Imaginons que nous voulions créer une page "A Propos" pour notre site. L'URL souhaitée serait /a-propos. Nous allons donc créer un nouveau contrôleur (ou utiliser un contrôleur existant, comme DefaultController s'il est pertinent) et y ajouter une méthode avec la route correspondante.
Si vous n'avez pas encore de contrôleur dédié, vous pouvez en générer un rapidement avec Symfony Console :
php bin/console make:controller StaticPageController
Cela créera un fichier src/Controller/StaticPageController.php. Modifions-le pour y ajouter notre route "A Propos" :
Page A Propos
Ceci est notre page à propos.