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

17

Я использую рамки 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»?

    
задан 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
  • Что вы подразумеваете под «внутри закрытия»? –  735Tesla 26.12.2013 в 21:59
  • Гм, я не являюсь носителем английского языка, поэтому я, возможно, не очень хорошо выражаю ... Я имею в виду, что в теле функции вы передаете второй аргумент фильтра; что вы уже делаете, т. е. не обращайте много внимания на мою плохую формулировку :) –  Damien Pirsy 26.12.2013 в 22:01
  • Спасибо, извините за то, что не получил этого в первую очередь –  735Tesla 26.12.2013 в 22:03
  • Именно то, что я искал. –  enchance 03.10.2014 в 13:01
  • @DamienPirsy - вы говорите «// используем указанный ключ» - где я должен определить ключ? Я не могу получить значение параметра –  Darius.V 04.03.2015 в 08:03