Предположим, что у меня есть ресурс, определенный в моих Маршрутах, как:
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');