martes, 23 de mayo de 2017

Personalizar pagina no encontrada o error 404 en Laravel 5.4

   

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>


Y eso seria todo, al poner una ruta que no existe saldría esta pagina de error.

Personalizar pagina no encontrada o error 404 en Laravel 5.4

César GI

About César GI

Lo que me importa es poder enseñar lo poco que se, por que asi como yo aprendo leyendo gracias a las personas que comparten sus conocimiento yo tambien quiero ayudar a la comunidad en español aportando lo poco que he aprendido hasta el momento.

7 comentarios

Write comentarios
28 de julio de 2017, 21:52 delete

Gracias !!! estaba buscando esto hace dias , me sive de mucho tu aporte :)

Reply
avatar
26 de noviembre de 2017, 16:55 delete Este comentario ha sido eliminado por el autor.
avatar
16 de marzo de 2018, 14:33 delete

Muchisima gracias me sirvio para laravel 5.5 excelente, despues realice su diseño de error 404
100 pts

Reply
avatar
Unknown
AUTHOR
14 de julio de 2018, 22:44 delete

no entra en if($this->isHttpException($exception))
probé evaluar $exception->getStatusCode() y tampoco lo toma (undefined)
404 lo tengo con abort pero 500 no me funciona, alguna idea?

Reply
avatar