在Laravel中间件中'return $ next($ request)'是做什么的?

时间:2019-04-25 14:08:12

标签: laravel closures middleware

请尊重我是编程和Laravel的新手,所以这个问题对于大多数人来说似乎有些奇怪。
但是我认为这就是stackoverflow的目的,所以:

当我使用命令php artisan make:middleware setLocale创建新的中间件时,已经有了其中包含以下代码的handle函数:

return $next($request);

我想知道这行到底是做什么的。

2 个答案:

答案 0 :(得分:4)

在文档中对此进行了解释:

  

要将请求更深地传递到应用程序中(允许中间件“传递”),请使用$ request调用$ next回调。

     

最好将中间件设想为一系列HTTP请求必须经过“层”才能到达您的应用程序。每层都可以检查请求,甚至完全拒绝它。

https://laravel.com/docs/5.8/middleware#defining-middleware

答案 1 :(得分:1)

$next($request)只是将请求传递给下一个处理程序。 假设您添加了一个用于检查年龄限制的中间件。

public function handle($request, Closure $next)
{
    if ($request->age <= 18) {
        return redirect('home');
    }

    return $next($request);
}

当年龄小于18岁时,它将重定向到首页,但是当请求通过条件时,应如何处理请求?它将传递给下一个处理程序。可能传递给注册用户方法或任何视图。