Custom 404 page in Lumen

Seeing as errors are handled in App\Exceptions\Handler, this is the best place to deal with them.

If you are only after a custom 404 error page, then you could do this quite easily:

Add this line up the top of the Handler file:

use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;

Alter the render function to look like so:

public function render($request, Exception $e)
{
    if($e instanceof NotFoundHttpException){
        return response(view("errors.404"), 404);
    }
    return parent::render($request, $e);
}

This assumes your custom 404 page is stored in an errors folder within your views, and will return the custom error page along with a 404 status code.


You may want to add this so that when for example blade blows up the error page hander will not throw a PHP error.

public function render($request, Exception $exception)
 {
   if (method_exists('Exception','getStatusCode')){

     if($exception->getStatusCode() == 404){
       return response(view("errors.404"), 404);
     }

     if($exception->getStatusCode() == 500){
       return response(view("errors.500"), 404);
     }
   }
   return parent::render($request, $exception);
 }

Tags:

Laravel

Lumen