2016-08-03 6 views
1

Я хочу выполнить определенные операции с моделью в промежуточном программном обеспечении. Вот пример того, что я хочу добиться:Как получить параметр url из запроса в Laravel 5?

public function handle($request, Closure $next) 
{ 
    $itemId = $request->param('item'); // <-- invalid code, serves for illustration purposes only 
    $item = Item::find($itemId); 

    if($item->isBad()) return redirect(route('dont_worry')); 

    return $next($request); 
} 

Мой вопрос, как я могу получить нужный параметр из $request?

+0

"request-> param ('item')" Вы хотите запросить параметр GET/POST? – pbalazek

+0

@pbwned только параметр url. Например, извлеките часть 'id' из'/item/{id} 'route –

ответ

3
public function handle(Request $request, Closure $next) 
{ 
    $itemId = $request->item; 
    //.............. 

} 
5

Если параметр является частью URL, и этот код используется в Middleware, вы можете получить доступ к параметру по его имени из маршрута данной:

public function handle($request, Closure $next) 
{ 
    $itemId = $request->route()->getParameter('item'); 
    $item = Item::find($itemId); 

    if($item->isBad()) return redirect(route('dont_worry')); 

    return $next($request); 
} 

Это основано на наличии маршрут как: '/getItem/{item}'

+1

У меня возникла ошибка: метод getParameter() не существует. Я получил такие параметры: '$ request-> route() -> parameters ['item']' –