4

如何向路由添加过滤器并将控制器传递给它?

在 Laravel 的文档中,他们说您可以像这样向路由添加过滤器:

Route::get('/', array('before' => 'auth', function()
{
     return 'Not Authorized';
}));

但我需要传递一个控制器,如下所示:

Route::get('/', array('before' => 'auth', 'HomeController@index'));

但是当我这样做时会出现这个错误:

call_user_func_array() expects parameter 1 to be a valid callback, no array or string given

任何想法?

4

2 回答 2

10

你应该用键传递控制器功能uses,所以替换,

Route::get('/', array('before' => 'auth', 'HomeController@index'));

和,

Route::get('/', array('as' => 'home', 'before' => 'auth', 'uses' => 'HomeController@index'));

并且应该有一个登录路径来处理这样的auth过滤器。

Route::get('login', function()
{
   if(Auth::user()) {
      return Redirect::to('/');
   }

   return View::make('login');
});
于 2013-09-26T15:55:27.620 回答
5

想为您的问题添加另一个解决方案。

您也可以使用它,我认为它更具可读性。

Route::get('/', 'HomeController@index')->before('auth');

如果您需要命名路由,则只需要使用“as”和“uses”,例如。对于表单路由。

于 2013-11-21T19:53:50.490 回答