Documentation · Chapitre 03

Transmettre des données
à la vue.

Une page devient utile lorsque le contrôleur lui fournit des valeurs. Nous gardons la préparation séparée de l’affichage.

Vous modifierez un seul élément à la fois, dans un fichier précisément indiqué, puis vous contrôlerez le résultat.

Le contrôleur prépare

Remplacez uniquement la méthode index() de AboutController. Le second argument de view() est un tableau associatif : chaque clé devient un nom disponible dans la vue.

phpaml — zsh
public function index(Request $request): Response
{
    return $this->view('about.php', [
        'projectName' => 'Reading List',
        'bookCount' => 3,
    ]);
}
projectName

nom que la vue utilisera

Reading List

valeur préparée par le contrôleur

La vue affiche sans faire confiance

src/views/about.php

phpaml — zsh
<main>
    <h1><?= htmlspecialchars($projectName, ENT_QUOTES, 'UTF-8') ?></h1>
    <p>Vous suivez <?= (int) $bookCount ?> livres.</p>
</main>

<?= ... ?> est une forme courte de echo. htmlspecialchars transforme les caractères pouvant être interprétés comme du HTML. Cette protection est importante dès qu’une valeur peut provenir d’un formulaire, d’une URL ou d’une base de données. Le cast (int) garantit ici un nombre.

Suivez la valeur

1Contrôleur'bookCount' => 3
→
2view()about.php
→
3Vue$bookCount
→
4HTML3 books

La vue ne va pas chercher les données elle-même. Le contrôleur les lui remet explicitement, ce qui rend le flux lisible et testable.

QUESTIONS DE DÉBUTANT

Les questions normales à ce stade.

Pourquoi ne pas écrire le nombre directement dans la vue ?

Parce qu’une vraie valeur changera. La transmettre prépare le code aux données d’un service ou d’une base.

Puis-je transmettre un objet ?

Oui. Le projet initial transmet déjà un HomeModel à home.php.

Faut-il échapper tous les textes ?

Échappez les valeurs dynamiques affichées en HTML, surtout celles qui viennent d’un utilisateur ou d’une source externe.