未找到Laravel 5 Function()

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)


Mar*_*łek 8

如果您在路由中添加除控制器方法之外的任何内容,则需要将其添加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)


pau*_*dru 5

如果您不对视图使用控制器,而只想显示视图,则应执行以下操作:

Route::get('foo/bar', ['middleware' => 'auth', function () {
    return View::make('path.to.your.page');
}]);
Run Code Online (Sandbox Code Playgroud)