【问题标题】:Laravel how to pass parameter to middlleware?Laravel如何将参数传递给中间件?
【发布时间】:2018-09-20 01:04:19
【问题描述】:

内核.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']]

【问题讨论】:

    标签: php laravel middleware


    【解决方案1】:

    根据laravel documentation,额外的中间件参数将在$next参数之后传递给中间件,试试:

    public function handle($request, Closure $next, $verify)

    【讨论】:

    • dd($verify) 时出现此错误,Type error: Too little arguments to function App\Http\Middleware\IsDealer::handle(), 2 pass in
    • 你把参数传给中间件了吗
    猜你喜欢
    • 2018-10-08
    • 1970-01-01
    • 1970-01-01
    • 2020-02-29
    • 1970-01-01
    • 2015-11-29
    • 2013-06-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多