未找到Laravel 5 Function()

时间:2015-02-13 05:12:23

标签: php laravel middleware 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']);

只要不包含中间件,路由就可以正常工作。

当使用中间件访问路径时,结果并没有那么有趣。

  

糟糕,看起来出了问题。

     

Route.php第150行中的ReflectionException:

     

功能()不存在

非常感谢任何见解,帮助和/或帮助。我已经完成了Google电路,找不到任何与我当前困境有关的内容。提前谢谢。

3 个答案:

答案 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');
}]);