Pages d'erreur
River permet de personnaliser les pages 403 et 404 avec vos propres templates et votre design.
Backward compatible : Si aucune vue n'existe, River retombe sur la réponse texte brut — rien ne casse.
Principe
Après l'exécution de la pipeline, Http_engine intercepte les réponses 403 et 404.
Si une vue correspondante existe dans app/Views/errors/, elle est rendue à la place
de la réponse texte brut. La vue gère son propre HTML complet (rendue sans layout).
Créer une page d'erreur
Créez les fichiers dans app/Views/errors/ :
// app/Views/errors/404.php
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<title>Page introuvable</title>
</head>
<body>
<h1>404 — Page introuvable</h1>
<p>La page que vous cherchez n'existe pas.</p>
<a href="/">Retour à l'accueil</a>
</body>
</html>
// app/Views/errors/403.php
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<title>Accès restreint</title>
</head>
<body>
<h1>403 — Accès restreint</h1>
<p>Vous n'avez pas les droits pour accéder à cette page.</p>
<a href="/">Retour à l'accueil</a>
</body>
</html>
Ces templates sont rendus sans layout. Ils doivent contenir un HTML complet
(doctype, head, body) avec leurs propres assets CSS si besoin.
Variable disponible
La variable $status est injectée dans le template :
<h1><?= $status ?> — Erreur</h1>
Fichiers concernés dans River
| Fichier | Rôle |
|---|---|
src/View.php | exists(string $template): bool — vérifie si un template existe dans tous les chemins enregistrés |
src/Http_engine.php | resolve_error_page() — intercepte 403/404 et tente de rendre la vue custom |