Lumen: как я могу получить параметры URL-адреса из промежуточного программного обеспечения

Это мой routes.php:

$app->get('/users/{id}/', ['middleware' => 'example', function () {
  return "users";
}]);

Это функция handle в промежуточном программном обеспечении:

public function handle($request, Closure $next)
{
  // I would like to get the value of the url parameter {id} here

  return $next($request);
}

Есть ли способ получить параметр id из моего промежуточного программного обеспечения?

* Изменить *

Я использую Lumen 5.1.0.


person Andrea    schedule 07.07.2015    source источник
comment
Я не знаком с Laravel, но после беглого просмотра я думаю, что вы должны использовать следующий метод: laravel.com/docs/5.0/middleware#terminable-middleware . Не могли бы вы дать нам определение класса? Итак, от какого класса вы наследуете?   -  person GuyT    schedule 07.07.2015
comment
@GuyT Я не наследую какой-либо класс, я следую очень простому примеру, как описано здесь: lumen.laravel.com/docs/middleware#defining-middleware. Мой класс промежуточного программного обеспечения называется ExampleMiddleware, и у него есть только описанный выше метод. Как терминируемое промежуточное ПО, которое вы связали, может быть полезно для меня?   -  person Andrea    schedule 07.07.2015


Ответы (3)


В Laravel есть несколько обычных способов, которые не работают на Lumen. И получение URI формы параметра в промежуточном программном обеспечении является одним из них. В Laravel мне просто нужно вызвать $request->id, это сработает как по волшебству. Но вот для того, чтобы получить параметр в люменах, мне нужно сделать примерно так:

$request->route()[2]['id']
person Phi Nguyen    schedule 07.07.2015
comment
Я не знаю, какую версию Laravel вы используете. Не могли бы вы проверить это $request->route()->parameter('id')? - person Phi Nguyen; 07.07.2015
comment
@ Андреа, я добавил новый ответ. Я надеюсь, что это будет полезно - person Phi Nguyen; 07.07.2015
comment
да, это работает! но, пожалуйста, дайте мне объяснение. как это работает? - person Andrea; 07.07.2015
comment
при вызове $request-›route() он возвращает массив с информацией о ваших маршрутах, например, какое промежуточное ПО вы используете, какие параметры вы передаете. попробуйте dd($request->route(), вы поймете, что я имею в виду. Тогда последний индекс содержит параметры, которые вы передали через маршрут. - person Phi Nguyen; 08.07.2015
comment
Работает как на Lumen 5.1, так и на Lumen 5.4. Большое спасибо. - person racl101; 02.09.2017
comment
Это все еще работает. Пришлось использовать это в 2020 году в Lumen 7.x. Выглядит как действительно непрофессиональный способ сделать это, но все же придется. - person Kishor; 12.06.2020

Если переданное значение $request является экземпляром Illuminate\Http\Request, что, как я думаю, может быть, в этом классе есть метод с именем input(), который позволяет вам сделать именно это:

введите здесь описание изображения

Вы должны попробовать это:

$id = $request->input('id');
person Jeremy Harris    schedule 07.07.2015
comment
Я пробовал с $id = $request->input('id');, но получаю null внутри $id. - person Andrea; 07.07.2015
comment
Off вопрос: какой шрифт используется на скриншоте? - person Richelly Italo; 02.04.2020
comment
Честно не помню, это было 5 лет назад. - person Jeremy Harris; 02.04.2020
comment
Без проблем. Спасибо! - person Richelly Italo; 03.04.2020

я думаю, что последнее официальное руководство Lumen 5.6 о промежуточном программном обеспечении больше не применимо и устарело.

person Allen Wayne    schedule 04.08.2018