我正在整理一个网站,该网站有一个受保护的部分,用户必须登录才能访问。我在Laravel 4中完成了这个,没有太多事故。然而,对于我的生活,我无法弄清楚为什么我无法在Laravel 5(L5)中使用它。
在L5中间件被引入。这会将路径文件更改为:
Route::get('foo/bar', ['middleware'=>'auth','FooController@index']);
Route::get('foo/bar/{id}', ['middleware'=>'auth','FooController@show']);
只要不包含中间件,路由就可以正常工作。
当使用中间件访问路径时,结果并没有那么有趣。
糟糕,看起来出了问题。
Route.php第150行中的ReflectionException:
功能()不存在
非常感谢任何见解,帮助和/或帮助。我已经完成了Google电路,找不到任何与我当前困境有关的内容。提前谢谢。
答案 0 :(得分:83)
您忘记了uses
密钥:
Route::get('foo/bar/{id}', ['middleware'=>'auth', 'uses'=>'FooController@show']);
答案 1 :(得分:8)
如果您在路线中添加除控制器方法之外的任何内容,则需要添加uses
作为控制器阵列的键,因此,例如,如果我不熟悉任何中间件,那么足以写:
Route::get('foo/bar', 'FooController@index');
Route::get('foo/bar/{id}', 'FooController@show');
但是,如果要添加中间件,则需要编写:
Route::get('foo/bar', ['middleware'=>'auth','uses' => 'FooController@index']);
Route::get('foo/bar/{id}', ['middleware'=>'auth','uses' => 'FooController@show']);
答案 2 :(得分:4)
如果你没有为你的视图使用控制器而你只想显示视图,你应该这样做:
Route::get('foo/bar', ['middleware' => 'auth', function () {
return View::make('path.to.your.page');
}]);