Laravel 5.4 Crear una página personalizada para el error " HTTP 404 Not Found" con el excepción de Handler:
En laravel puedes crear tus propias páginas de error personalizadas en base a diferentes códigos de estado HTTP.
Crea todas las páginas releted al código de estado HTTP en seguir el Camino Resources / views / errores /
Aquí una lista común de código de estado HTTP que te enfrentaras a lo largo de un desarrollo:
- 400 para Solicitud incorrecta
- 403 Prohibida
- 404 no encontrado
- 408 para Request Timeout
- 500 de error interno del servidor
Para personalizar nuestros errores, se puede crear un archivo de vista con el mismo nombre que el código de estado del error HTTP por ejemplo 400.blade.php 403.blade.php 404.blade.php 500.blade.php.
¿Y donde colocamos nuestro controlador de errores?
Pues en esta ruta : app/Exceptions/Handler.php
public function render($request, Exception $exception) { if($this->isHttpException($exception)){ switch ($exception->getStatusCode()) { // PAGINA NO ENCONTRADA case 404: return response()->view('errors.404',[],404); break; // ERROR INTERNO DEL SERVIDOR case '500': return response()->view('errors.500',[],500); break; default: return $this->renderHttpException($exception); break; } } return parent::render($request, $exception); }
Y por ultimo creamos nuestra vista: resources/views/errors/404.blade.php
<!doctype html> <html lang="{{ config('app.locale') }}"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Error - Pagina no encontrada</title> <!-- Fonts --> <link href="https://fonts.googleapis.com/css?family=Raleway:100,600" rel="stylesheet" type="text/css"> <!-- Styles --> <style> html, body { background-color: #fff; color: #636b6f; font-family: 'Raleway', sans-serif; font-weight: 100; height: 100vh; margin: 0; } .full-height { height: 100vh; } .flex-center { align-items: center; display: flex; justify-content: center; } .position-ref { position: relative; } .top-right { position: absolute; right: 10px; top: 18px; } .content { text-align: center; } .title { font-size: 84px; } .links > a { color: #636b6f; padding: 0 25px; font-size: 12px; font-weight: 600; letter-spacing: .1rem; text-decoration: none; text-transform: uppercase; } .m-b-md { margin-bottom: 30px; } </style> </head> <body> <div class="flex-center position-ref full-height"> @if (Route::has('login')) <div class="top-right links"> @if (Auth::check()) <a href="{{ url('/home') }}">Home</a> @else <a href="{{ url('/login') }}">Login</a> <a href="{{ url('/register') }}">Register</a> @endif </div> @endif <div class="content"> <H1>LO SENTIMOS ESTA PAGINA NO EXISTE</H1> </div> </div> </body> </html>
6 comentarios
Write comentariosMuchisimas gracias :)
ReplyMuchas Gracias
ReplyExcelente!!! Gracias
ReplyMuchisima gracias me sirvio para laravel 5.5 excelente, despues realice su diseño de error 404
Reply100 pts
no entra en if($this->isHttpException($exception))
Replyprobé evaluar $exception->getStatusCode() y tampoco lo toma (undefined)
404 lo tengo con abort pero 500 no me funciona, alguna idea?