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

本文介绍了如何在ThinkPHP6中使用验证器进行数据验证,通过调用`getValidateBase(Request()->controller())`方法,结合场景验证,如在Settings类中定义的`settings`场景,实现批量验证并一次性显示所有错误。当验证失败时,会显示错误提示,成功则返回true。

假如我们有一个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 !

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jason Ho

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值