Notre premier contrôleur
Découvrons la structure de Symfony et créons notre premier contrôleur
Notions théoriques
Symfony suit une structure de dossier bien définie qui facilite la gestion et l'organisation du code. Les principaux dossiers que vous utiliserez sont :
src
: Contient le code source de votre application. C'est ici que vous créez vos contrôleurs, entités, formulaires, etc.templates
: Contient les fichiers de vues de votre application. Symfony utilise le moteur de template Twig.public
: C'est le répertoire racine de votre application Web. Il contient le fichierindex.php
qui est le point d'entrée de toutes les requêtes.
Un contrôleur dans Symfony est une classe PHP qui contient des méthodes d'action public. Ces méthodes d'action sont appelées lorsque certaines routes (URL) sont demandées par le client. Dans un modèle MVC, le contrôleur agit comme un intermédiaire entre le modèle (qui gère les données) et la vue (qui présente les données à l'utilisateur).
Pour créer un contrôleur dans Symfony, vous pouvez créer une nouvelle classe dans le répertoire src/Controller
. Cette classe doit étendre la classe AbstractController
de Symfony et doit contenir au moins une méthode d'action public. Par exemple :
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
class GameController extends AbstractController
{
public function index(): Response
{
return new Response('Hello, world!');
}
}
Pour créer un contrôleur, vous pouvez aussi utiliser la commande make:controller
de Symfony.
Exemple de mise en application
Maintenant, créons notre premier contrôleur. Dans votre terminal, exécutez la commande suivante :
php bin/console make:controller GameController
Cela créera un nouveau fichier GameController.php
dans le dossier src/Controller
. Ouvrez ce fichier, vous verrez une méthode index()
. Cette méthode est une action qui renvoie une réponse HTTP. Par défaut, elle renvoie une vue Twig. Vous pouvez la modifier pour renvoyer un texte simple, comme ceci :
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
class GameController extends AbstractController
{
public function index(): Response
{
return new Response('Welcome to our game!');
}
}
Maintenant, si vous accédez à http://localhost:8000/game
, vous verrez le texte "Welcome to our game".
Test de mémorisation/compréhension
TP pour réfléchir et résoudre des problèmes
Votre défi pour aujourd'hui consiste à créer votre premier contrôleur
Créez un contrôleur PlayerController
et une action index
qui renvoie "Hello, Player!".
Ensuite, accédez à http://localhost:8000/player
pour voir le résultat.
Une solution
Vous devez être connecté pour voir le contenu.