laravel 中间件增加参数并且使用的时候额外传参

转载 Laravel
阅读数: 646 2018年10月26日

有时候中间件会有多种处理情况,这就需要往中间件传入参数来告知中间件目前是什么情况。


以下是摘抄:

除了请求实例$request和闭包$next之外,中间件还可以接收额外参数,我们还是以TestMiddleware为例,现在要求年龄在18岁以上的男性才能访问指定页面,handle方法定义如下:

public function handle($request, Closure $next, $gender)
{
    if($request->input('age')>=18 && $gender==$request->input('gender')){
        return $next($request);
    }else{
        return redirect()->route('refuse');
    }
}

对应的路由配置如下:

Route::group(['middleware'=>':'],function(){
    Route::get('/write/laravelacademy',function(){
        //使用Test中间件
    });
    Route::get('/update/laravelacademy',function(){
        //使用Test中间件
    });
});

Route::get('/age/refuse',['as'=>'refuse',function(){
    return "18岁以上男子才能访问!";
}]);

使用的时候:test 就是中间件别名,需要在 app/Http/Kernel.php 里面配置 protected $routeMiddleware。

male 就是传入的第一个参数,如果多个参数,可以用逗号隔开。例如:'test:male,peter,age'

参考资料
https://laravelacademy.org/post/537.html
phpriji.cn | 网站地图 | 沪ICP备17015433号-1