ミドルウェアを指すルートがあるとします。
Route::get("/user/{id}", ['middleware' => 'auth', function ($id) {
}]);
そして、私のミドルウェアコードは次のとおりです。
public function handle($request, Closure $next)
{
return $next($request);
}
ミドルウェアで$id
を使用したい場合、どうすればよいですか?
以下のいずれかの方法を使用して、ミドルウェアのルートパラメーターにアクセスできます。
最初の方法
$request->route()->parameters();
このメソッドは、すべてのパラメーターの配列を返します。
2番目の方法
$request->route('parameter_name');
ここに parameter_name
は、ルートでパラメーターと呼ばれるものを指します。
あなたの場合、_$id
_をミドルウェアに渡すことはできません。
通常、次のような_:
_シンボルを使用して、ミドルウェアにパラメーターを渡すことができます。
_Route::get('user/{id}', ['middleware' => 'auth:owner', function ($id) {
// Your logic here...
}]);
_
そして、渡されたパラメーターを次のようなミドルウェアメソッドに取得します。
_<?php
namespace App\Http\Middleware;
use Closure;
class Authentication
{
public function handle($request, Closure $next, $role)
{
if (auth()->check() && auth()->user()->hasRole($role)) {
return $next($request);
}
return redirect('login');
}
}
_
handle()
メソッドは、通常_$request
_と_$next closure
_のみを使用し、ミドルウェアパラメーターである_third parameter
_を持っていることに注意してください。ルート定義でミドルウェア呼び出しに複数のパラメーターを渡した場合は、handle()メソッドにパラメーターを追加するだけです
お役に立てれば!