Backend PHP (BPH) Help

Exercice : Controller et formulaires

Le but de cet exercice est assez simple, vous allez faire en sorte en MVC, d'afficher puis traiter un formulaire de connexion.

Étape 0 :

  1. Créez un dossier formulaire dans le dossier coda-bph-j8

Étape 1 : architecture des dossiers

Créez l'architecture de dossiers et fichiers suivante :

- assets style.css - config autoload.php - controllers AbstractController.php AuthController.php - services Router.php - templates layout.phtml login.phtml notFound.phtml .htaccess index.php

Étape 2 : autoload.php

Dans votre fichier config/autoload.php faites des require des fichiers :

  • controllers/AbstractController.php

  • controllers/AuthController.php

  • services/Router.php

Étape 3 : les controllers

Étape 3.1 : AbstractController

Reprenez l'exemple du cours pour créer votre classe abstraite AbstractController.

Étape 3.2 : AuthController

Votre classe AuthController hérite d' AbstractController et a deux méthodes :

  • public function login() : void

Si aucun formulaire n'est soumis elle appelle sa méthode render pour afficher le template login.

Si le formulaire est soumis et que l'email est bien présent, elle le stocke dans une variable $email et fait un var_dump($email).

  • public function notFound() : void qui render le template notFound

Étape 4 : les templates

4.1 layout.phtml

Le contenu de templates/layout.phtml:

<!DOCTYPE html> <html lang="fr"> <head> <meta charset="utf-8" /> <title>Exercice Controllers et Formulaire</title> <link rel="stylesheet" href="assets/style.css" /> </head> <body> <?php require "templates/$template.phtml"; ?> </body> </html>

4.2 login.phtml

Le contenu de templates/login.phtml:

<main> <form method="post" action="/"> <fieldset> <label for="email"> Email </label> <input type="email" id="email" name="email" /> </fieldset> <fieldset> <label for="password"> Mot de passe </label> <input type="password" id="password" name="password" /> </fieldset> <fieldset> <button type="submit">Connexion</button> </fieldset> </form> </main>

4.3 : notFound.phtml

<main> <h1>404 : Page introuvable</h1> </main>

Étape 5 : le Routeur

Faites votre classe Router avec sa méthode handleRequest.

Il ne gère que la route par défaut ($get['path'] n'existe pas), tout le reste est une page 404.

Étape 6 : index.php

Dans votre index.php, faites un require de config/autoload.php puis instanciez votre Router et appelez sa méthode handleRequest.

02 December 2025