2013-09-26 41 views
4

如何添加一個過濾器到路由並傳遞一個控制器?Laravel 4:添加一個過濾器到一個路由通過它一個控制器

在Laravel的doc,他們說,你可以添加一個過濾器,以這樣的路線:

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

但我需要通過一個控制器,像這樣:

Route::get('/', array('before' => 'auth', '[email protected]')); 

,但我得到這個錯誤時,我這樣做:

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

任何想法?

回答

10

你應該通過控制器功能與uses鍵,所以更換,

Route::get('/', array('before' => 'auth', '[email protected]')); 

有了,

Route::get('/', array('as' => 'home', 'before' => 'auth', 'uses' => '[email protected]')); 

而且應該有一個登錄處理auth過濾器這樣的路線。

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

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

我可以在數組中省略'as'參數嗎? – arielcr

+0

是的,你可以省略這個鍵值對。 – devo

+0

@arielcr檢查更新後的答案。 – devo

5

希望爲您的問題添加另一種解決方案。

你也可以使用這個,在我看來這更可讀。

Route::get('/', '[email protected]')->before('auth'); 

如果您需要命名路由,您只需要使用「as」和「uses」,例如。爲表單路由。

相關問題