1

No matter what I do, I can't bind the 404 page to Laravel's handler.

This is what my handler.php looks like:

//app/Exceptions/handler.php public function render($request, Exception $e) { if($this->isHttpException($e)) { switch ($e->getStatusCode()) { // not found case 404: return \Response::view('errors.404',404); break; // internal error case '500': return \Response::view('errors.500',500); break; default: return $this->renderHttpException($e); break; } } else { return parent::render($request, $e); } } 

In my controller I render the view like this:

render view($request) 

where $request is the uri.

I added 404.blade.php under /views/errors/, but am still getting Laravel's standard debug error page : Whoops, looks like something went wrong.

dumping $this->isHttpException($e) returns false bolean

Here is the entire log

[2015-06-05 20:41:30] local.ERROR: exception 'InvalidArgumentException' with message 'View [contact] not found.' in /Users/username/Desktop/folderone/folder2/vendor/compiled.php:12898 Stack trace: #0 /Users/username/Desktop/folderone/folder2/vendor/compiled.php(12871): Illuminate\View\FileViewFinder->findInPaths('contact', Array) #1 /Users/username/Desktop/folderone/folder2/vendor/compiled.php(12996): Illuminate\View\FileViewFinder->find('contact') #2 /Users/username/Desktop/folderone/folder2/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php(565): Illuminate\View\Factory->make('contact', Array, Array) #3 /Users/username/Desktop/folderone/folder2/app/Http/Controllers/PageController.php(14): view('contact') #4 [internal function]: App\Http\Controllers\PageController->show('contact') #5 /Users/username/Desktop/folderone/folder2/vendor/compiled.php(8287): call_user_func_array(Array, Array) #6 /Users/username/Desktop/folderone/folder2/vendor/compiled.php(8354): Illuminate\Routing\Controller->callAction('show', Array) #7 /Users/username/Desktop/folderone/folder2/vendor/compiled.php(8333): Illuminate\Routing\ControllerDispatcher->call(Object(App\Http\Controllers\PageController), Object(Illuminate\Routing\Route), 'show') #8 [internal function]: Illuminate\Routing\ControllerDispatcher->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request)) #9 /Users/username/Desktop/folderone/folder2/vendor/compiled.php(8952): call_user_func(Object(Closure), Object(Illuminate\Http\Request)) #10 [internal function]: Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request)) #11 /Users/username/Desktop/folderone/folder2/vendor/compiled.php(8935): call_user_func(Object(Closure), Object(Illuminate\Http\Request)) #12 /Users/username/Desktop/folderone/folder2/vendor/compiled.php(8334): Illuminate\Pipeline\Pipeline->then(Object(Closure)) #13 /Users/username/Desktop/folderone/folder2/vendor/compiled.php(8320): Illuminate\Routing\ControllerDispatcher->callWithinStack(Object(App\Http\Controllers\PageController), Object(Illuminate\Routing\Route), Object(Illuminate\Http\Request), 'show') #14 /Users/username/Desktop/folderone/folder2/vendor/compiled.php(7317): Illuminate\Routing\ControllerDispatcher->dispatch(Object(Illuminate\Routing\Route), Object(Illuminate\Http\Request), 'App\\Http\\Contro...', 'show') #15 /Users/username/Desktop/folderone/folder2/vendor/compiled.php(7288): Illuminate\Routing\Route->runWithCustomDispatcher(Object(Illuminate\Http\Request)) #16 /Users/username/Desktop/folderone/folder2/vendor/compiled.php(6954): Illuminate\Routing\Route->run(Object(Illuminate\Http\Request)) #17 [internal function]: Illuminate\Routing\Router->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request)) #18 /Users/username/Desktop/folderone/folder2/vendor/compiled.php(8952): call_user_func(Object(Closure), Object(Illuminate\Http\Request)) #19 [internal function]: Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request)) #20 /Users/username/Desktop/folderone/folder2/vendor/compiled.php(8935): call_user_func(Object(Closure), Object(Illuminate\Http\Request)) #21 /Users/username/Desktop/folderone/folder2/vendor/compiled.php(6955): Illuminate\Pipeline\Pipeline->then(Object(Closure)) #22 /Users/username/Desktop/folderone/folder2/vendor/compiled.php(6944): Illuminate\Routing\Router->runRouteWithinStack(Object(Illuminate\Routing\Route), Object(Illuminate\Http\Request)) #23 /Users/username/Desktop/folderone/folder2/vendor/compiled.php(6929): Illuminate\Routing\Router->dispatchToRoute(Object(Illuminate\Http\Request)) #24 /Users/username/Desktop/folderone/folder2/vendor/compiled.php(1935): Illuminate\Routing\Router->dispatch(Object(Illuminate\Http\Request)) #25 [internal function]: Illuminate\Foundation\Http\Kernel->Illuminate\Foundation\Http\{closure}(Object(Illuminate\Http\Request)) #26 /Users/username/Desktop/folderone/folder2/vendor/compiled.php(8952): call_user_func(Object(Closure), Object(Illuminate\Http\Request)) #27 /Users/username/Desktop/folderone/folder2/vendor/compiled.php(2438): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request)) #28 /Users/username/Desktop/folderone/folder2/app/Http/Middleware/VerifyCsrfToken.php(17): Illuminate\Foundation\Http\Middleware\VerifyCsrfToken->handle(Object(Illuminate\Http\Request), Object(Closure)) #29 /Users/username/Desktop/folderone/folder2/vendor/compiled.php(8944): App\Http\Middleware\VerifyCsrfToken->handle(Object(Illuminate\Http\Request), Object(Closure)) #30 /Users/username/Desktop/folderone/folder2/vendor/compiled.php(12083): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request)) #31 /Users/username/Desktop/folderone/folder2/vendor/compiled.php(8944): Illuminate\View\Middleware\ShareErrorsFromSession->handle(Object(Illuminate\Http\Request), Object(Closure)) #32 /Users/username/Desktop/folderone/folder2/vendor/compiled.php(10785): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request)) #33 /Users/username/Desktop/folderone/folder2/vendor/compiled.php(8944): Illuminate\Session\Middleware\StartSession->handle(Object(Illuminate\Http\Request), Object(Closure)) #34 /Users/username/Desktop/folderone/folder2/vendor/compiled.php(11789): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request)) #35 /Users/username/Desktop/folderone/folder2/vendor/compiled.php(8944): Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse->handle(Object(Illuminate\Http\Request), Object(Closure)) #36 /Users/username/Desktop/folderone/folder2/vendor/compiled.php(11738): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request)) #37 /Users/username/Desktop/folderone/folder2/vendor/compiled.php(8944): Illuminate\Cookie\Middleware\EncryptCookies->handle(Object(Illuminate\Http\Request), Object(Closure)) #38 /Users/username/Desktop/folderone/folder2/vendor/compiled.php(2478): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request)) #39 /Users/username/Desktop/folderone/folder2/vendor/compiled.php(8944): Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode->handle(Object(Illuminate\Http\Request), Object(Closure)) #40 [internal function]: Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request)) #41 /Users/username/Desktop/folderone/folder2/vendor/compiled.php(8935): call_user_func(Object(Closure), Object(Illuminate\Http\Request)) #42 /Users/username/Desktop/folderone/folder2/vendor/compiled.php(1891): Illuminate\Pipeline\Pipeline->then(Object(Closure)) #43 /Users/username/Desktop/folderone/folder2/vendor/compiled.php(1880): Illuminate\Foundation\Http\Kernel->sendRequestThroughRouter(Object(Illuminate\Http\Request)) #44 /Users/username/Desktop/folderone/folder2/public/index.php(53): Illuminate\Foundation\Http\Kernel->handle(Object(Illuminate\Http\Request)) #45 /Users/username/Desktop/folderone/folder2/server.php(21): require_once('/Users/nashdelo...') #46 {main} 
6
  • can you provide the whole error message from your log? Commented Jun 5, 2015 at 20:36
  • If you try to return dd('404 error') instead of a view is it working properly? Commented Jun 5, 2015 at 20:48
  • The default path is views/errors, not view/errors Commented Jun 5, 2015 at 20:53
  • @Alexandros, dd('404 error'); returns '404 error' Commented Jun 5, 2015 at 20:58
  • try to create a new view and return it instead of the errors.404 Commented Jun 5, 2015 at 21:01

2 Answers 2

3

You do not have to code anything but creating some templates files in views/errors, e.g.

 laravel/resources/views/errors/404.blade.php laravel/resources/views/errors/500.blade.php laravel/resources/views/errors/403.blade.php 

Laravel can render them automatically.

Sign up to request clarification or add additional context in comments.

2 Comments

I did mention in my post that I added 404.blade.php inside views/errors
In the debug mode, it shows error description page instead your error page, try to change APP_DEBUG=false in your .env file, or 'debug' => false, in your config/app.php file.
1

As soon as you want to use Laravel default views/errors directory for storing your custom error views you should call isHttpException() method inside app/Exceptions/handler.php.

 /** * 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)) { switch ($e->getStatusCode()) { // not found case 404: //whatever you want to do with this exception return $this->renderHttpException($e); break; // internal error case '500': //whatever you want to do with this exception return $this->renderHttpException($e); break; default: return $this->renderHttpException($e); break; } } else { return parent::render($request, $e); } } 

2 Comments

This is what my handler.php looks like, but doesn't work
this is not like handler.php in your question.. :/ try to replace yours with this one and see if works.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.