TP6验证器的使用示例及正确验证数据

假如我们有一个Settings类,我们需要对表单提交的数据进行有效验证。

先写一个数据验证方法:

/**
     * 验证器
     * @param $param    array|object 验证的数据
     * @param $action   string  方法名
     * @return bool     bool   
     */
    private function settingsValidate($param,$action)
    {
        $validate = $this->getValidateBase(Request()->controller());

        if($validate instanceof Settingss){
            #批量验证数据是否合法
            $settingsValidate = $validate->scene($action)->batch(true)->check($param);

            if (!$settingsValidate) {
                return $this->ServerResponse::createByError($validate->getError());
            }

            return $validate->hasScene($action);
        }

        return  false;
    }

$this->getValidateBase(Request()->controller());
这句其实是调用父类中的方法,类似工厂设计模式,我们看父类base中的getValidateBase()方法的写法:
在这里插入图片描述
然后我们进行场景验证,名字是¥action 。这个名字与当前方法的名字是一样的。例如settings验证器中的某个场景写法:
在这里插入图片描述
而且我们进行的是批量验证batch(true),只要不满足某些条件,它会一起弹出错误提示,而不是单条提示。

 #批量验证数据是否合法
            $settingsValidate = $validate->scene($action)->batch(true)->check($param);

当验证失败的的时候,我们放出错误提示:

 return $this->ServerResponse::createByError($validate->getError());

如果所有字段全部满足要求,那么我们返回true就可以了 。否则返回false。

至此一个验证方法就完成了。

然后我们可以在控制器中直接调用这个方法就可以完成数据的验证:

   $this->settingsValidate($param,$action);

think you !

发布了124 篇原创文章 · 获赞 10 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_42433970/article/details/103156724