jos*_*eph 34 php middleware laravel laravel-routing laravel-5
我正在组建一个具有受保护部分的站点,用户必须登录才能访问.我在Laravel 4中完成了这个,没有太多事故.然而,对于我的生活,我无法弄清楚为什么我不能让它在Laravel 5(L5)中工作.
在L5中,中间件被引入.这会将路径文件更改为:
Route::get('foo/bar', ['middleware'=>'auth','FooController@index']);
Route::get('foo/bar/{id}', ['middleware'=>'auth','FooController@show']);
Run Code Online (Sandbox Code Playgroud)
只要不包含中间件,路由就可以正常工作.
当使用中间件访问路由时,结果并不是那么有趣.
哎呀,看起来像出事了.
Route.php第150行中的ReflectionException:
Function()不存在
非常感谢任何见解,帮助和/或帮助.我已经完成了Google电路,找不到任何与我当前困境有关的内容.提前致谢.
man*_*nix 84
你忘记了uses
钥匙:
Route::get('foo/bar/{id}', ['middleware'=>'auth', 'uses'=>'FooController@show']);
Run Code Online (Sandbox Code Playgroud)
如果您在路由中添加除控制器方法之外的任何内容,则需要将其添加uses
为控制器阵列的键,例如,如果我没有任何中间件,则可以编写:
Route::get('foo/bar', 'FooController@index');
Route::get('foo/bar/{id}', 'FooController@show');
Run Code Online (Sandbox Code Playgroud)
但是,如果要添加中间件,则需要编写:
Route::get('foo/bar', ['middleware'=>'auth','uses' => 'FooController@index']);
Route::get('foo/bar/{id}', ['middleware'=>'auth','uses' => 'FooController@show']);
Run Code Online (Sandbox Code Playgroud)
如果您不对视图使用控制器,而只想显示视图,则应执行以下操作:
Route::get('foo/bar', ['middleware' => 'auth', function () {
return View::make('path.to.your.page');
}]);
Run Code Online (Sandbox Code Playgroud)