Php Laravel 4:为路线添加过滤器,并将其传递给控制器
如何向路由添加筛选器并向其传递控制器 在Laravel的文档中,他们说您可以向如下路线添加过滤器: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')); 但是当我这样做的时候,我得到了这
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');