Accueil » Symfony 6 Créer un Controller

Symfony 6 Créer un Controller

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.

Symfony

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 :

Symfony 6 créer un controller cli

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 :

Nouveau controller
<?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 :