Afficher trois livres sur /books
- Générer BookController.
- Préparer un tableau de trois livres.
- Transmettre ce tableau à books.php.
- Afficher chaque titre et auteur avec foreach.
- Déclarer GET /books puis vérifier avec aml routes.
Étape 1 — Le contrôleur
aml make:controller Booksrc/controllers/BookController.php
<?php
declare(strict_types=1);
namespace App\Controllers;
use PHPAML\Http\Request;
use PHPAML\Http\Response;
use PHPAML\Mvc\Controller;
final class BookController extends Controller
{
public function index(Request $request): Response
{
$books = [
['title' => 'Clean Code', 'author' => 'Robert C. Martin'],
['title' => 'The Pragmatic Programmer', 'author' => 'David Thomas & Andrew Hunt'],
['title' => 'Design Patterns', 'author' => 'Erich Gamma et al.'],
];
return $this->view('books.php', ['books' => $books]);
}
}Ici les données sont volontairement écrites dans le contrôleur pour apprendre le trajet. Plus tard, un service ou un dépôt les récupérera sans modifier la responsabilité de la vue.
Étape 2 — La vue
src/views/books.php
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Mes livres</title>
</head>
<body>
<main>
<h1>Mes livres</h1>
<ul>
<?php foreach ($books as $book): ?>
<li>
<strong><?= htmlspecialchars($book['title'], ENT_QUOTES, 'UTF-8') ?></strong>
— <?= htmlspecialchars($book['author'], ENT_QUOTES, 'UTF-8') ?>
</li>
<?php endforeach; ?>
</ul>
</main>
</body>
</html>foreach répète le même fragment HTML pour chaque élément du tableau. La syntaxe avec deux-points et endforeach est du PHP natif particulièrement lisible au milieu du HTML.
Étape 3 — La route
src/routes/WebApp.php
use App\Controllers\AboutController;
use App\Controllers\BookController;
use App\Controllers\HomeController;
// Dans routes():
$this->get('/', [HomeController::class, 'index']);
$this->get('/about', [AboutController::class, 'index']);
$this->get('/books', [BookController::class, 'index']);Ne remplacez pas les routes existantes : ajoutez l’import et la nouvelle ligne. Une classe utilisée sans son use complet ne pourra pas être trouvée.
Étape 4 — La recette de vérification
aml routes
# Vérifier GET /books
aml test- Confirmez que GET /books apparaît dans aml routes.
- Ouvrez http://127.0.0.1:8910/books.
- Vérifiez les trois titres et auteurs.
- Lancez aml test pour vérifier le projet.
Défis utiles
- Ajoutez un quatrième livre sans modifier la vue.
- Ajoutez une propriété year et affichez-la en entier.
- Ajoutez un lien depuis la page À propos vers /books.
- Déplacez ensuite la création du tableau dans un BookCatalog, quand vous aurez étudié les services.
EN RÉSUMÉ
Ce qu’il faut retenir
- Une route associe une adresse à une action.
- Le contrôleur prépare et transmet les données.
- La vue affiche et échappe les valeurs.
- aml routes, le navigateur et aml test forment une vérification progressive.