Php Laravel 4:为路线添加过滤器,并将其传递给控制器

Php Laravel 4:为路线添加过滤器,并将其传递给控制器,php,laravel,laravel-4,Php,Laravel,Laravel 4,如何向路由添加筛选器并向其传递控制器 在Laravel的文档中,他们说您可以向如下路线添加过滤器: Route::get('/', array('before' => 'auth', function() { return 'Not Authorized'; })); 但我需要传递一个控制器,如下所示: Route::get('/', array('before' => 'auth', 'HomeController@index')); 但是当我这样做的时候,我得到了这

如何向路由添加筛选器并向其传递控制器

在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

有什么想法吗?

您应该使用
uses
键传递控制器功能,因此更换

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

应该有一个登录路径来处理
auth
过滤器,如下所示

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

   return View::make('login');
});

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

你也可以用这个,在我看来它更具可读性

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

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

我可以在数组中使用
as
参数吗?是否有方法使用方法返回控制器,而不是
返回视图::make('login')?您可以使用相同的方法<代码>路由::get('login',array('uses'=>'HomeController@login'));
并从
HomeController
登录
功能返回视图。我刚刚注意到一个空格
“uses”
,它会引发相同的错误,谢谢。
Route::get('/', 'HomeController@index')->before('auth');