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()方法的写法:
TP6验证器的使用示例及正确验证数据_第1张图片
然后我们进行场景验证,名字是¥action 。这个名字与当前方法的名字是一样的。例如settings验证器中的某个场景写法:
TP6验证器的使用示例及正确验证数据_第2张图片
而且我们进行的是批量验证batch(true),只要不满足某些条件,它会一起弹出错误提示,而不是单条提示。

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

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

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

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

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

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

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

think you !

你可能感兴趣的:(TP6验证器的使用示例及正确验证数据)