En Laravel, personalizar las páginas de error permite mejorar la experiencia del usuario y mantener la coherencia de diseño en tu aplicación. Laravel facilita la creación de estas páginas mediante plantillas Blade.
1. Ubicación de las plantillas de error:
Laravel utiliza la carpeta resources/views/errors
para las páginas de error. Si esta carpeta no existe, créala.
2. Crea una plantilla para el código de error:
Cada página de error se identifica por su código HTTP (por ejemplo, 404, 500).
Para personalizar una página de error, crea un archivo Blade con el nombre del código de error. Ejemplo para un error 404:
resources/views/errors/404.blade.php
3. Diseña la página de error:
Usa HTML, CSS y Blade para crear una página personalizada. Por ejemplo:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Error 404 - Página no encontrada</title>
<link rel="stylesheet" href="{{ asset('css/app.css') }}">
</head>
<body>
<div class="error-page">
<h1>Error 404</h1>
<p>Lo sentimos, la página que estás buscando no existe.</p>
<a href="{{ url('/') }}">Volver al inicio</a>
</div>
</body>
</html>
4. Crear una plantilla genérica opcional:
Si deseas manejar varios errores con una sola página, crea un archivo resources/views/errors/404.blade.php
y usa el código HTTP dinámicamente:
<h1>Error @yield('code', 'Error')</h1>
<p>@yield('message', 'Ocurrió un problema.')</p>
5. Configura el archivo Handler.php (opcional):
Si necesitas personalizar aún más la lógica de manejo de errores, edita el método render
en app/Exceptions/Handler.php
.
Ejemplo:
public function render($request, Throwable $exception)
{
if ($exception instanceof NotFoundHttpException) {
return response()->view('errors.404', [], 404);
}
return parent::render($request, $exception);
}
Crea un archivo 403.blade.php
con un mensaje amigable indicando que el acceso está restringido.
Diseña un archivo 500.blade.php
que sugiera al usuario intentar nuevamente más tarde.
Consulta la documentación oficial de Laravel sobre manejo de errores en laravel.com/docs/errors.
Jorge García
Fullstack developer