Подтвердить что ты не робот

Параметр прохождения Laravel от маршрута до фильтра

Я использую рамки laravel. Если у меня есть следующий маршрут:

Route::get('/test/{param}', array('before'=>'test_filter', '[email protected]'));

И этот фильтр:

Route::filter('test_filter', function() {
    $param = [Get the parameter from the url];
    return "The value is $param";
});

Как передать параметры фильтру, чтобы при посещении/тестировании/foobar я получил бы страницу с сообщением: "Значение foobar"?

4b9b3361

Ответ 1

Фильтры могут передаваться как объекты Route или Request:

Задание параметров фильтра

Route::filter('age', function($route, $request, $value)
{
    //
});

Вышеприведенный пример берется из документов: http://laravel.com/docs/routing#route-filters

Как только вы попадете в закрытие, вы берете параметр из $route:

Route::filter('test_filter', function($route) {
    $param = $route->getParameter('param'); // use the key you defined
    return "The value is $param";
});


В качестве альтернативы, я считаю, что вы можете просто извлечь сегмент, который вам нужен (не тестирован, но должен работать):
Route::filter('test_filter', function() {
    $param = Request::segment(1);
    return "The value is $param";
});