我是laravel 5的新手,目前被这个错误所困扰:
FatalErrorException in TicketController.php line 18: Class 'App\Http\Controllers\View' not found
奇怪的是视图确实存在,我查看路由是否确实路由到正确的控制器,它是,当我尝试这样做时错误弹出:
return View::make('tickets.bus.index');
我要么在某处犯错,要么实施与laravel 4不同
答案 0 :(得分:81)
问题不是实际视图,而是类 View
。您会看到,当您引用类似View::make('tickets.bus.index')
PHP的类时,您会在当前命名空间中搜索该类。
在这种情况下App\Http\Controllers
。但是,View
类显然不存在于控制器的命名空间中,而是存在于Laravel框架命名空间中。它还有一个别名,它位于全局命名空间中。
您可以通过添加反斜杠来引用根命名空间中的别名:
return \View::make('tickets.bus.index');
或者在顶部添加一个import语句:
use View;
答案 1 :(得分:18)
在Laravel 5.1中,正确的use
代码为:
use Illuminate\Support\Facades\View;
答案 2 :(得分:9)
存在一个辅助函数view()
,它位于全局命名空间中,可用于简化语法:
return view('tickets.bus.index');
使用此方法,不必包含use View;
或包含根名称空间,例如\View
。
lukasgeiter解释的概念对理解Laravel至关重要,即使你选择使用帮助函数。
答案 3 :(得分:2)
对我来说这是命名空间问题。我使用php artisan来创建控制器,但似乎php artisan使用了不同的命名空间(可能我必须在composer.json中更改某些内容以修复它但我在laravel中是全新的)
Whoops, looks like something went wrong.
FatalErrorException in PagesController.php line 11:
Class 'App\Http\Controllers\Controller' not found
很好,我使用phpStorm自动插入适当的命名空间
确保正确检出命名空间。这就是我用php artisan
创建控制器的方法namespace App\Http\Controllers; use App\Http\Requests; use App\Http\Controllers\Controller; //php artisan inserted. class PagesController extends Controller { public function index(){ return view('index'); } public function about(){ return view('pages.about'); } }
这就是我在手动编写扩展控制器
后插入phpstorm的方法namespace App\Http\Controllers; use App\Http\Requests; use Illuminate\Routing\Controller; //I manually wrote extends Controller and selected this namespace class PagesController extends Controller { public function index(){ ...
答案 4 :(得分:0)
存在一个辅助函数view(),它位于全局命名空间中,可用于简化语法:
返回视图('tickets.bus.index');
With this method, it is unnecessary to include use View; or include the root namespace, e.g., \View.
lukasgeiter解释的概念对理解Laravel至关重要,即使你选择使用帮助函数。