Я использую рамки 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»?
Фильтрам могут быть переданы параметры, такие как объект 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"; });