Laravel 5.0 - Custom Error Pages
This is a series of posts on New Features in Laravel 5.0.
!Warning: This post is over a year old. I don't always update old posts with new information, so some of this information may be out of date.
When you wanted to customize your error pages—for example, showing a particular cat GIF when your users hit a 404—you’d Google it and follow these instructions by Dries Vints.
In Laravel 5 things have changed a bit. TL;DR take me to the solution already
Trace it through the code
Now, all custom error and exception handling has moved to app/Exceptions/Handler.php
. You’ll remember that that’s where we went to bring Whoops back.
You’ll notice, however, that it does this by default:
/**
* Render an exception into an HTTP response.
*
* @param \Illuminate\Http\Request $request
* @param \Exception $e
* @return \Illuminate\Http\Response
*/
public function render($request, Exception $e)
{
if ($this->isHttpException($e))
{
return $this->renderHttpException($e);
}
else
{
return parent::render($request, $e);
}
}
For all HTTP Exceptions (like 404s and 503s), it uses the renderHttpException()
method, which isn’t defined in this file. So, we check its parent, \Illuminate\Foundation\Exceptions\Handler
, where we can find the renderHttpException()
method:
/**
* Render the given HttpException.
*
* @param \Symfony\Component\HttpKernel\Exception\HttpException $e
* @return \Symfony\Component\HttpFoundation\Response
*/
protected function renderHttpException(HttpException $e)
{
if (view()->exists('errors.'.$e->getStatusCode()))
{
return response()->view('errors.'.$e->getStatusCode(), [], $e->getStatusCode());
}
else
{
return (new SymfonyDisplayer(config('app.debug')))->createResponse($e);
}
}
So, if the view exists for "errors.{httpStatusCode}", it'll display it (and pass along a little bit of information).
How ya do it
So, if we have a view file accessible at “errors.{errorStatusCode}”, it’ll automatically display for that status code.
So that means customizing your 404 error page is as simple as adding a view at resources/views/errors/404.blade.php
. Done!
Comments? I'm @stauffermatt on Twitter
Tags: laravel • laravel 5
This is part of a series of posts on New Features in Laravel 5.0:
-
Sep 10, 2014 | laravel, 5.0, laravel 5
-
Sep 10, 2014 | laravel, 5.0, laravel 5
-
Sep 12, 2014 | laravel, laravel 5, 5.0
-
Sep 20, 2014 | laravel, 5.0, laravel 5
-
Sep 28, 2014 | laravel, laravel 5, 5.0
-
Sep 30, 2014 | laravel, 5.0, laravel 5
-
Oct 9, 2014 | laravel, 5.0, laravel 5
-
Oct 10, 2014 | laravel, 5.0, laravel 5
-
Oct 10, 2014 | laravel, 5.0, laravel 5
-
Oct 16, 2014 | laravel, 5.0, laravel 5
-
Nov 20, 2014 | laravel, 5.0, laravel 5
-
Jan 2, 2015 | laravel, 5.0, commands, laravel 5
-
Jan 16, 2015 | laravel, laravel 5
-
Jan 19, 2015 | laravel 5, laravel
-
Jan 21, 2015 | laravel, events, 5.0, laravel 5
-
Jan 26, 2015 | laravel, laravel 5
-
Feb 1, 2015 | laravel, laravel 5
-
Feb 14, 2015 | laravel 5, laravel, eloquent