
Etape 2 : Implémenter la logique dans un nouveau contrôleur
Apprenez à créer et implémenter la logique applicative dans un contrôleur Symfony. Gérez les requêtes, préparez les données et retournez des réponses.
Le rôle central du contrôleur dans Symfony
Une fois qu'une route a été définie et qu'elle correspond à une requête utilisateur, Symfony dirige cette requête vers le contrôleur associé. Le contrôleur est une classe PHP dont les méthodes, appelées actions, contiennent la logique nécessaire pour traiter la requête et générer une réponse.
Le contrôleur agit comme un chef d'orchestre pour une requête donnée. Ses responsabilités principales incluent :
- Accéder aux informations de la requête : Récupérer les paramètres de l'URL, les données d'un formulaire soumis, les en-têtes HTTP, etc.
- Interagir avec les services de l'application : Par exemple, communiquer avec la base de données via Doctrine (pour lire ou écrire des données), utiliser un service d'envoi d'emails, appeler une API externe, etc.
- Appliquer la logique métier : Effectuer des calculs, prendre des décisions basées sur les données, valider des entrées utilisateur.
- Préparer les données pour la vue : Rassembler et structurer toutes les informations qui devront être affichées à l'utilisateur.
- Retourner un objet
Response: En fin de compte, chaque action de contrôleur doit retourner un objetSymfony\Component\HttpFoundation\Response. Cet objet encapsule la réponse HTTP qui sera renvoyée au navigateur (contenu HTML, JSON, redirection, etc.).
Dans notre quête pour créer une page web simple, le contrôleur sera initialement assez basique, mais il est crucial de comprendre son rôle pour construire des applications plus complexes.
Créer ou identifier votre contrôleur
Si vous suivez notre exemple de la page "A Propos" de l'étape précédente, nous avons déjà évoqué la création d'un contrôleur nommé StaticPageController. Si vous ne l'avez pas encore fait, vous pouvez le générer en utilisant la commande Symfony Console :
php bin/console make:controller StaticPageController
Cette commande crée un fichier src/Controller/StaticPageController.php avec une structure de base. Si vous avez déjà un contrôleur où vous souhaitez ajouter la logique de votre nouvelle page (par exemple, un MainController ou DefaultController), vous pouvez simplement y ajouter une nouvelle méthode.
Un contrôleur dans Symfony est une simple classe PHP qui hérite généralement de Symfony\Bundle\FrameworkBundle\Controller\AbstractController. Hériter de AbstractController est très pratique car cela vous donne accès à de nombreuses méthodes raccourcis utiles, comme render() pour afficher des templates Twig, redirectToRoute() pour les redirections, createForm() pour les formulaires, etc.
Implémenter la méthode d'action et retourner une réponse
Dans l'étape 1, nous avons défini une route /a-propos avec le nom app_about et nous l'avons associée (implicitement ou explicitement) à une méthode de notre contrôleur. Supposons que nous ayons nommé cette méthode about().
La tâche principale de cette méthode about() est de retourner un objet Symfony\Component\HttpFoundation\Response. Pour une page web simple qui affiche du HTML, la réponse contiendra ce code HTML.
";
$htmlContent .= "" . htmlspecialchars($pageTitle) . "
";
$htmlContent .= "" . htmlspecialchars($description) . "
";
$htmlContent .= "Site créé le: " . $creationDate->format('d/m/Y') . "
";
$htmlContent .= "