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

17

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

Route::get('/test/{param}', array('before'=>'test_filter', 'SomeController@anyAction'));

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

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

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

    
задан 735Tesla 26.12.2013 в 21:35
источник

1 ответ

40

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

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

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

Вышеприведенный пример берется из документов: Ссылка

Как только вы попадете в закрытие, вы берете параметр из $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";
});
    
ответ дан Damien Pirsy 26.12.2013 в 21:55
источник