Aller au contenu principal

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 fichier index.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


Qu'est-ce qu'un contrôleur dans Symfony ?


Quel dossier contient le code source de l'application ?


Comment créer un contrôleur dans Symfony ?


Quelle est la fonction d'une action dans un contrôleur ?


Quel dossier contient les fichiers de vues de l'application ?


Comment crée-t-on un contrôleur dans Symfony ?


Qu'est-ce qu'une méthode d'action dans Symfony ?


Quelle classe un contrôleur Symfony doit-il étendre ?


Comment renvoie-t-on une réponse HTTP dans Symfony ?



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