在laravel

时间:2017-11-14 15:53:24

标签: laravel

我正在尝试处理2个中间件,然后再将其路由到控制器。 Laravel不会在下面的代码中给我一个错误,但它只处理第一个中间件' CheckReferer '并且不会处理第二个中间件' CheckCart '。即使您更改了序列,它也会处理第一个中间件(例如,' CheckCart',' CheckReferer')。

web.php

Route::prefix($language)->middleware('CheckReferer', 'CheckCart')->group(function() {

     Route::get('/', 'HomeController@getIndex')->name('home');

});

CheckReferer.php(中间件)

class CheckReferer
{

    public function handle($request, Closure $next)
    {
        $Referer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : null;

        if($Referer != null) {
            $url_parsed = parse_url($Referer);

            if ($url_parsed['host'] == 'www.example.com') {

                $Referer = true;
                Session::put('Referer', $Referer);

            }
        }

        return $next($request);
    }

}

CheckCart.php(中间件)

class CheckCart
{
    public function handle(Request $request, Closure $next)
    {

        $oldCart = Session::has('Cart') ? Session::get('Cart') : null;

        return $next($request);
    }
}

1 个答案:

答案 0 :(得分:0)

将它们作为数组传递......

Route::prefix($language)->middleware(['CheckReferer', 'CheckCart'])->group(function() {

     Route::get('/', 'HomeController@getIndex')->name('home');

});