Bringing Whoops Back to Laravel 5

Posted on January 19, 2015 | By Matt Stauffer


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.

You might be missing the "prettier" Whoops error handler from Laravel 4. If so, here's how to bring it back.

Update: If you're using Laravel 5.2, check out this Laracasts thread on Whoops in Laravel 5.2. I'll update this post soon with updated info, but for now just take a look there.

First, composer require filp/whoops:~1.0.

Then open app/Exceptions/Handler.php, and in the render() method, add a Whoops handler in the else condition. Maybe something like this:

    /**
     * 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);
        }

        if (config('app.debug'))
        {
            return $this->renderExceptionWithWhoops($e);
        }

        return parent::render($request, $e);
    }

    /**
     * Render an exception using Whoops.
     * 
     * @param  \Exception $e
     * @return \Illuminate\Http\Response
     */
    protected function renderExceptionWithWhoops(Exception $e)
    {
        $whoops = new \Whoops\Run;
        $whoops->pushHandler(new \Whoops\Handler\PrettyPageHandler());

        return new \Illuminate\Http\Response(
            $whoops->handleException($e),
            $e->getStatusCode(),
            $e->getHeaders()
        );
    }

That's it!

Thanks to this thread on the Laracasts forum for getting me moving in the right direction.


Comments? I'm @stauffermatt on Twitter


Tags: laravel 5  •  laravel