Les erreurs HTTP¶
Le framework affiche une page d'erreur mise en forme pour les principales erreurs HTTP (à partir de la version v2.5.0).
| Code | Page | Quand survient-elle ? |
|---|---|---|
| 404 | Page introuvable | La route demandée n'existe pas |
| 405 | Méthode non autorisée | La méthode HTTP n'est pas autorisée (Exemple : POST au lieu de GET) |
| 403 | Accès interdit | Le controller lève une ErrorHttpStatusException avec le code 403 |
| 500 | Erreur interne du serveur | Une exception non gérée est survenue pendant le traitement |
Chaque page affiche le code de l'erreur, un message explicatif, le message de l'exception en mode développement uniquement et un lien de retour à l'accueil.
Personnaliser les pages d'erreur¶
Les pages d'erreur sont des templates Twig situés dans le dossier app/Template/error/ de votre projet :
├── app
│ └── Template
│ └── error
│ ├── http-403.html.twig
│ ├── http-404.html.twig
│ ├── http-405.html.twig
│ └── http-500.html.twig
Vous pouvez modifier leur contenu (texte, style, structure) comme n'importe quel template : elles reçoivent trois variables :
| Variable | Description |
|---|---|
code |
Le code HTTP de l'erreur (Exemple : 404) |
name |
Le nom du framework |
exception_message |
Le message de l'exception (renseigné uniquement en mode dev) |
Pages autonomes
Les pages d'erreur n'héritent pas de base.html.twig : elles sont autonomes avec leur propre CSS.
Ainsi, elles fonctionnent même si l'erreur vient de vos templates ou de votre mise en page.
Lever une erreur HTTP depuis un controller¶
La classe ErrorHttpStatusException permet d'interrompre le traitement et d'afficher une page d'erreur depuis un controller. Le second paramètre est le code HTTP.
Exemple : interdire l'accès à une page :
<?php
namespace Controller;
use Studoo\EduFramework\Core\Controller\Request;
use Studoo\EduFramework\Core\Exception\ErrorHttpStatusException;
class AdminController
{
public function index(Request $request): string|null
{
if ($request->get('token') !== 'mon-token-secret') {
// Affiche la page d'erreur 403 (accès interdit)
throw new ErrorHttpStatusException('Zone réservée aux administrateurs', 403);
}
// ... traitement normal
}
}
Les codes supportés sont 403, 404 et 405 ; tout autre code affiche la page 500.
Le mode développement¶
En mode développement (APP_ENV=dev dans le fichier ".env"), les pages d'erreur affichent le message de l'exception dans un encadré rouge : utile pour comprendre et corriger l'erreur.
En production (ou si APP_ENV n'est pas défini), ce message est masqué : le visiteur ne voit qu'une page d'erreur générique. C'est une bonne pratique de sécurité : les messages d'erreur peuvent révéler des informations internes (chemins, requêtes, configuration).
Attention
Les erreurs de configuration (Exemple : le fichier "routes.yaml" introuvable) déclenchent aussi la page 500. Le message d'origine s'affiche en mode développement pour vous aider à corriger le problème.