tp6Day6--验证器

56 阅读1分钟

验证器定义

验证器的使用,我们必须先定义它,系统提供了一条命令直接生成想要的类php think make:validate User

<?php
declare (strict_types = 1);

namespace app\validate;

use think\Validate;

class User extends Validate
{
    /**
     * 定义验证规则
     * 格式:'字段名' =>  ['规则1','规则2'...]
     *
     * @var array
     */
    protected $rule = [
        'name' => 'require|max:20|checkName:zsf', //不得为空,不得大于 20 位
        'price' => 'number|between:1,100',//必须是数值,1-100 之间
        'email' => 'email' //邮箱格式要正确
    ];
    /**
     * 定义错误信息
     * 格式:'字段名.规则名' =>  '错误信息'
     *
     * @var array
     */
    protected $message = [
        'name.require' => '名称必须',
        'name.max' => '名称最多不能超过 20 个字符',
        'price.between' => '价格必须在 1-100 之间',
        'email' => '邮箱格式错误'
    ];

    /**
     * User: wuJiaWei
     * DateTime: 2024/6/27 9:20:10
     * describe:
     * @param $value
     * @param $rule
     */
    protected function checkName($value,$rule,$data,$field,$title)
    {
//        dump($value);//当前字段值
//        dump($rule);//当前规则值
//        dump($data);//所有数据信息
//        dump($field);//当前字段名
//        dump($title);//字段描述,没有就是字段名

        return $rule != $value ? true : '名称存在非法称谓';
    }
}
<?php
/**
 * @description: TODO
 * @author wuJiaWei
 * @date 2024/6/26 17:22:42
 * @version 1.0
 */

namespace app\controller;

use app\validate\User;

class Verify
{
    public function index()
    {
        try {
            $data = [ 'name' => 'zsf', 'price' => 901, 'email' => 'xiaoxin163.com' ];
//            validate(User::class)->check($data);
            validate(User::class)->batch(true)->check($data);
        } catch (\Exception $e) {
            var_dump($e->getMessage());
            dump($e->getMessage());
        }
    }
}

独立验证

public function independent()
{
    //use think\facade\Validate;
    $data = [ 'name' => '蜡笔小新', 'price' => 901, 'email' => 'xiaoxin163.com' ];
    $validate = Validate::rule([
        'name' => 'require|max:20', //不得为空,不得大于 20'price' => 'number|between:1,100',//必须是数值,1-100 之间
        'email' => 'email' //邮箱格式要正确
    ]);
    $result = $validate->batch(true)->check($data);
    if(!$result){
        dump($validate->getError());
    }
}

验证规则

image.png

image.png