Laravel 如何给中间件传递参数?
Laravel how to pass parameter to middlleware?
Kernel.php
protected $routeMiddleware = [
'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'isSeller' =>App\Http\Middleware\IsSeller::class,
'isDealer' =>App\Http\Middleware\IsDealer::class,
];
web.php
Route::group(['middleware'=>['isDealer:verified']],function (){
Route::post("/doc_submit", "DealerController@docSubmit")->name('doc-submit');
});
IsDealer.php
public function handle($request, Closure $next)
{
if ( Auth::check() && Auth::user()->isDealer() )
{
dd($request->route()->parameters()); // []
$notification_count = count(Notification::where('user_id','=', Auth::user()->id)->where('seen', '=', 0)->get());
View::share('notification', $notification_count);
return $next($request);
} else {
return GlobalController::AuthLoginPrompt("dealer");
}
}
当用户尝试提交文档时,我需要检查该用户的用户帐户验证状态,我如何将参数传递给中间件? dd($request->route()->parameters()) return [] 我已经写了 ['middleware'=>['isDealer:verified' 如何得到 'verified' ]]
根据 laravel documentation,额外的中间件参数将在 $next 参数之后传递给中间件,尝试:
public function handle($request, Closure $next, $verify)
Kernel.php
protected $routeMiddleware = [
'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'isSeller' =>App\Http\Middleware\IsSeller::class,
'isDealer' =>App\Http\Middleware\IsDealer::class,
];
web.php
Route::group(['middleware'=>['isDealer:verified']],function (){
Route::post("/doc_submit", "DealerController@docSubmit")->name('doc-submit');
});
IsDealer.php
public function handle($request, Closure $next)
{
if ( Auth::check() && Auth::user()->isDealer() )
{
dd($request->route()->parameters()); // []
$notification_count = count(Notification::where('user_id','=', Auth::user()->id)->where('seen', '=', 0)->get());
View::share('notification', $notification_count);
return $next($request);
} else {
return GlobalController::AuthLoginPrompt("dealer");
}
}
当用户尝试提交文档时,我需要检查该用户的用户帐户验证状态,我如何将参数传递给中间件? dd($request->route()->parameters()) return [] 我已经写了 ['middleware'=>['isDealer:verified' 如何得到 'verified' ]]
根据 laravel documentation,额外的中间件参数将在 $next 参数之后传递给中间件,尝试:
public function handle($request, Closure $next, $verify)