La création d’une nouvelle page – qu’il s’agisse d’une page HTML ou d’une page de type JSON – est un processus en deux étapes :
- Créer une route : Une route est l’URL (par exemple /about) de votre page et pointe vers un contrôleur ;
- Créer un contrôleur : Un contrôleur est la fonction PHP que vous écrivez pour construire la page. Vous prenez les informations de la requête entrante et les utilisez pour créer un objet Symfony Response, qui peut contenir du contenu HTML, une chaîne JSON ou même un fichier binaire comme une image ou un PDF.
Création d’une page : Route et contrôleur
Supposons que vous vouliez créer une page – /lucky/number – qui génère un numéro chanceux (enfin, aléatoire) et l’imprime. Pour ce faire, créez une classe « Controller » et une méthode « controller » à l’intérieur de celle-ci :
<?php
// src/Controller/DefaultController.php
namespace App\Controller;
use Symfony\Component\HttpFoundation\Response;
class DefaultController
{
public function number(): Response
{
$number = random_int(0, 50); // un chiffre aléatoire entre 0 et 50
return new Response(
'<html><body>Chiffre aléatoire: '.$number.'</body></html>'
);
}
}
Vous devez maintenant associer cette fonction de contrôleur à une URL publique (par exemple /aleatoire/nombre) afin que la méthode number() soit appelée lorsqu’un utilisateur y navigue. Cette association est définie en créant une route dans le fichier config/routes.yaml :
# config/routes.yaml
# the "app_chiffre_aleatoire" route name is not important yet
app_chifre_aleatoire:
path: /aleatoire/nombre
controller: App\Controller\DefaultController::number
Voilà, c’est fait ! Si vous utilisez le serveur web Symfony, essayez-le en allant à l’adresse suivante : http://localhost:8000/lucky/number.
Si vous voyez un numéro chanceux s’afficher, félicitations ! Mais avant de courir jouer à la loterie, vérifiez comment cela fonctionne. Vous vous souvenez des deux étapes pour créer une page ?
- Créer un contrôleur et une méthode : Il s’agit d’une fonction dans laquelle vous construisez la page et renvoyez un objet Response. Vous en saurez plus sur les contrôleurs dans leur propre section, notamment sur la façon de renvoyer des réponses JSON ;
- Créez une route : Dans config/routes.yaml, la route définit l’URL de votre page (chemin) et le contrôleur à appeler. Vous en saurez plus sur le routage dans sa propre section, notamment sur la façon de créer des URL variables.
Routes d’annotation ( ma préféré )
Au lieu de définir votre route dans YAML, Symfony vous permet également d’utiliser des routes d’annotation ou d’attributs. Les attributs sont intégrés dans PHP à partir de PHP 8. Dans les versions antérieures de PHP, vous pouvez utiliser les annotations. Pour ce faire, installez le paquetage annotations :
composer require annotations
Vous pouvez maintenant ajouter votre route directement au-dessus du contrôleur :
// src/Controller/DefaultController.php
use Symfony\Component\Routing\Annotation\Route;
class DefaultController
{
/**
* @Route("/aleatoire/nombre")
*/
public function number(): Response
{
$nombre = random_int(0, 50); // un chiffre aléatoire entre 0 et 50
return new Response(
'<html><body>Chiffre aléatoire: '.$nombre.'</body></html>'
);
}
}