Déclarez la destination POST
src/routes/WebApp.php
$this->get('/books/create', [BookController::class, 'create']);
$this->post('/books', [BookController::class, 'store']);Une même adresse peut avoir des comportements différents selon sa méthode. Ici GET /books affichera la liste et POST /books ajoutera un livre.
Lisez les champs sans utiliser les variables globales
public function store(Request $request): Response
{
$title = trim((string) $request->input('title', ''));
$author = trim((string) $request->input('author', ''));
return $this->view('books/received.php', [
'title' => $title,
'author' => $author,
]);
}input('title', '') cherche la clé title et renvoie une chaîne vide si elle manque. Le cast string normalise le type; trim retire les espaces inutiles au début et à la fin. Lire la valeur ne signifie pas encore qu’elle est valide.
Ce que contient réellement Request
GET, POST, PUT, PATCH ou DELETE.
L’adresse demandée, par exemple /books.
Valeurs placées après ? dans l’adresse.
Réunit les valeurs de l’adresse et du corps envoyé.
Request centralise l’accès aux données, permet les tests et traite également les corps JSON ou encodés. Cela garde le contrôleur indépendant de la manière dont PHP a reçu la requête.
Testez le trajet avant d’ajouter la validation
- Vérifiez GET /books/create et POST /books avec aml routes.
- Ouvrez /books/create et remplissez les deux champs.
- Soumettez et confirmez les valeurs reçues.
- N’utilisez pas encore ces valeurs pour construire du SQL ou un nom de fichier.