Предположим, что у меня есть ресурс, определенный в моих Маршрутах, как:
Route::resource('account', 'AccountController', ['only'=> ['index','update']]);
И тогда у меня есть Middleware прикрепленное к Controller изнутри как:
public function __construct() { $this->middleware('BeforeAccount', ['only' => ['update']]); }
Предположим, что я хочу получить доступ к параметру uri, который происходит после учетной записи (например, example.com/account/2 ) в моем промежуточном ПО – как я могу взять эту переменную?
Для этого вы можете использовать следующий код:
public function handle($request, Closure $next) { $account_id = $request->route()->parameter('accounts'); //... }
Поскольку метод handle получает объект Request в качестве первого аргумента. middleware запускается только после того, как маршрут сопоставлен, поэтому объект Request содержит текущий маршрут и не нуждается в повторном сопоставлении маршрута с использованием Route::getRoutes()->match($request) .
Для этого вам не нужно предоставлять объект \ Request:
Route::current()->parameter('parameter');