5 - Les contrôleurs avec Symfony 4

Maintenant que nos entités sont créées, ainsi que l'authentification des utilisateurs, nous allons pouvoir commencer à créer nos pages.



Le modèle MVC sépare les 3 concepts que sont la base de données (modèles), la page html (Vue) et tout le traitement (Contrôleur).



Nous allons nous pencher sur la partie traitement qui va faire l'interface entre nos données et les vues.



Nous allons également parler des routes, qui serviront à former nos URLs.



Pour le 1er exemple, nous allons créer un contrôleur qui traitera toutes les pages "statiques" de notre site, comme la page d'accueil, les pages de mentions légales... En effet, un contrôleur peut gérer une multitude de "pages" qui correspondent à des routes. Pour l'exemple, le site Nouvelle-Techno.fr a une page d'accueil accessible par https://nouvelle-techno.fr et les mentions légales sont accessibles par https://nouvelle-techno.fr/mentions-legales



Les routes correspondantes sont "/" représentant la page d'accueil et "/mentions-legales"



Créer le contrôleur



Pour créer un contrôleur, nous utiliserons la commande suivante




php bin/console make:controller


La question nous est posée concernant le nom du contrôleur, nous allons l'appeler "MainController"



Cette commande crée plusieurs choses :




  • Un fichier MainController.php dans src/Controller

  • Un dossier main dans templates

  • Un fichier index.html.twig dans templates/main



Nous allons, pour le moment, regarder le fichier MainController.php



Celui-ci contient le code ci-dessous




<?php

namespace App\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Routing\Annotation\Route;

class MainController extends AbstractController
{
/**
* @Route("/main", name="main")
*/
public function index()
{
return $this->render('main/index.html.twig', [
'controller_name' => 'MainController',
]);
}
}


Une classe "MainController" a été créée. Celle-ci contient une seule méthode qui s'appelle "index".



J'attire votre attention sur le commentaire qui se trouve au dessus de la méthode




/**
* @Route("/main", name="main")
*/


Il s'agit d'une annotation qui permet de déclarer la route par laquelle nous pourrons accéder à cette méthode. Ici, nous accéderons par la route "/main".



Si notre site s'appelle "monblog.fr", la méthode sera accessible par "monblog.fr/main".



Cette route porte également un nom, qui est actuellement "main".



Nous pourrons donc faire référence à cette route sous le nom "main" à plusieurs endroits dans nos différents fichiers.



Concernant la méthode index, elle contient, pour le moment, une seul et unique instruction qui est un return que nous développerons un peu plus loin.



Structure d'un contrôleur



Le contrôleur est une classe qui contiendra différentes méthodes. Chaque méthode correspondra à une route particulière et retournera une vue ou des données, entre autres.



Ainsi, nous pourrions imaginer modifier notre contrôleur afin qu'il gère les routes de la page d'accueil et des mentions légales. Ces pages étant statiques, nous n'aurons qu'à générer la vue.



Le code serait le suivant




<?php

namespace App\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Routing\Annotation\Route;

class MainController extends AbstractController
{
/**
* @Route("/", name="accueil")
*/
public function index()
{
// Nous générons la vue de la page d'accueil
return $this->render('main/index.html.twig');
}

/**
* @Route("/mentions-legales", name="mentions-legales")
*/
public function mentionsLegales()
{
// Nous générons la vue de la page des mentions légales
return $this->render('main/mentions-legales.html.twig');
}
}


Vous pouvez constater que nous avons maintenant 2 méthodes, l'une pour la page d'accueil (route "/" et nom "accueil") et l'autre pour la page des mentions légales (route "/mentions-legales" et nom "mentions-legales")



Ces deux méthodes contiennent une seule inscruction return qui utilise une méthode "render" pour générer une vue. Ce point sera traité dans le prochain article.



Nous traiterons également dans un prochain article le dialogue entre le contrôleur, la base de données et la vue.



Obtenir de l'aide



Pour obtenir de l'aide, vous pouvez accéder au serveur Discord pour une entraide par chat

5 - Les contrôleurs avec Symfony 4
Article publié le - Modifié le

Catégories : MVC PHP Tutoriel Symfony

Mots-clés : Tutoriel Controllers Framework MVC PHP Routes Symfony controleurs

Partager : Partager sur Facebook Partager sur Twitter Partager sur LinkedIn