thinkphp6.0 中间件验证表单数据Validate

浏览:6676 发布日期:2019/06/08 分类:ThinkPHP6专区 关键字: thinkphp6.0 表单验证
1、在需要验证的控制器中定义middleware属性,建议定义在一个基础类中protected $middleware = ['app\middleware\Validate'];2、验证逻辑部分<?php

namespace app\middleware;

class Validate
{
    /**
     * @param \think\Request $request
     * @param \Closure $next
     * @return mixed|\think\response\Json
     */
    public function handle($request, \Closure $next)
    {
        //获取当前参数
        $params = $request->param();
        //获取访问控制器
        $controller = ucfirst($request->controller());
        //获取操作名,用于验证场景scene
        $scene = $request->action();
        $validate = "app\\validate\\" . $controller;
        //仅当验证器存在时 进行校验
        if (class_exists($validate)) {
            $v = new $validate;
            //仅当存在验证场景才校验
            if ($v->hasScene($scene)) {
                //设置当前验证场景
                $v->scene($scene);
                if (!$v->check($params)) {
                    //校验不通过则直接返回错误信息
                    return $v->getError();
                }
            }
        }
        return $next($request);
    }
}
完成这2步基本能达到统一验证表单数据的效果了。

承接开发微信小程序、微信公众号、网站建设、定制APP等外包项目。
https://www.ncyqd.com/ @一起点
最佳答案
评论( 相关
后面还有条评论,点击查看>>