Documentation · Chapitre 04

Recevoir les valeurs
côté serveur.

Le navigateur transforme les champs en une requête. PHPAML les expose à travers l’objet Request.

Nous poursuivons le projet reading-list. Les données seront conservées dans la session avant d’introduire une base de données.

Déclarez la destination POST

src/routes/WebApp.php

phpaml — zsh
$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

phpaml — zsh
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

method()

GET, POST, PUT, PATCH ou DELETE.

path()

L’adresse demandée, par exemple /books.

query()

Valeurs placées après ? dans l’adresse.

input()

Réunit les valeurs de l’adresse et du corps envoyé.

N’utilisez pas directement $_POST dans ce projet

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

  1. Vérifiez GET /books/create et POST /books avec aml routes.
  2. Ouvrez /books/create et remplissez les deux champs.
  3. Soumettez et confirmez les valeurs reçues.
  4. N’utilisez pas encore ces valeurs pour construire du SQL ou un nom de fichier.