Les Controllers permettent de vérifier les informations demander par les utilisateurs et de leurs afficher les données qu’ils doivent recevoir. Le controller permet aussi d’appeler à un changement de données et puis de rediriger l’utilisateur sur une autre page. Dans cette procédure, je vais vous expliquer comment créer et utiliser un Controller avec Symfony 6.
Prérequis :
- Une machine qui a Symfony 6 d’installer (Debian 11)
Symfony 6 Créer un Controller :
Afin d’avoir un Controller sur Symfony 6, on va avoir besoin d’un projet que nous allons faire depuis la CLI
symfony new --webapp test_controller
Ensuite on se rend dans le dossier du projet
cd test_controller
Puis à l’aide de la Symfony cli, on va créer le nouveau controller
symfony console make:controller
La console va vous demander un nom de Controller :
Si votre Controller a bien été créer alors un nouveau fichier php sera créer à l’emplacement src/Controller/NomDeVotreController.php
Ouvrer votre nouveau Controller à l’aide de votre IDE :
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
class TestController extends AbstractController
{
#[Route('/test', name: 'app_test')]
public function index(): Response
{
return $this->render('test/index.html.twig', [
'controller_name' => 'TestController',
]);
}
}
Le code inscrit dans ce fichier réalise que si l’utilisateur charge la page http://ip:port/test va afficher le fichier Twig présent dans le dossier:
templates/nom_du_controller/index.html.twig
Pour modifier le comportement de ce Controller, il faut adapter la classe de votre Controller.
#[Route('/test', name: 'app_test')]
Cette instruction définie que l’utilisateur de l’application devra saisir : http://ip:port/test afin d’exécuter la méthode et la route va s’appeler : app_test
public function index(): Response
{
return $this->render('test/index.html.twig', [
'controller_name' => 'TestController',
}
La méthode suivante va retourner une réponse qui sera un fichier Twig avec lequel on va lui envoyer le nom du Controller.
Pour créer une nouvelle route qui sera http://ip:port/afficherNombre/leNombre et que le text leNombre soit obligatoirement un nombre on peut le créer de la manière suivante :
#[Route('/afficherNombre/{nombre<\d+>}', name: 'app_afficher_nombre')]
public function afficherNombre($nombre)
{
dd($nombre);
}
L’instruction : {nombre<\d+>} permet de décrire que nous utiliserons la variable nombre qui va être un nombre à l’aide de la contrainte <\d+> (La documentation Symfony 6 des routes).
Ensuite on envoie le paramètre de la route dans la méthode afficherNombre.
Puis dans la méthode afficherNombre effectue un dd qui est une fonction de débug dans Symfony qui effectue l’équivalent d’un var_dump($nombre); et puis die();
Source :
https://symfony.com/doc/current/index.html
Susceptible de vous intéresser :
- Installer Symfony 6 sur Debian 11
- Créer une entité sur Symfony 6
- Créer une API sur Symfony 6