2013-09-26 2 views
4

Как добавить фильтр к маршруту и ​​передать ему контроллер ?.Laravel 4: Добавить фильтр в маршрут a передать ему контроллер

В док Laravel в они сказали, что вы можете добавить фильтр в маршрут, как это:

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'); 

Вам нужно использовать «как» и «использовать», если вам нужны именованные маршруты, например. для маршрута формы.

Смежные вопросы