首页 > 代码库 > TP5验证规则使用

TP5验证规则使用

定义验证器类:

namespace app\index\validate;use think\Validate;class User extends Validate{    protected $rule = [        ‘name‘  =>  ‘require|max:25‘,        ‘email‘ =>  ‘email‘,    ];    protected $message = [        ‘name.require‘  =>  ‘用户名必须‘,        ‘email‘ =>  ‘邮箱格式错误‘,    ];    protected $scene = [        ‘add‘   =>  [‘name‘,‘email‘],        ‘edit‘  =>  [‘email‘],    ];    }
 

①静态调用(使用内置的规则验证单个数据,返回值为布尔值

// 日期格式验证Validate::dateFormat(‘2016-03-09‘,‘Y-m-d‘); // true// 验证是否有效的日期Validate::is(‘2016-06-03‘,‘date‘); // true// 验证是否有效邮箱地址Validate::is(‘thinkphp@qq.com‘,‘email‘); // true// 验证是否在某个范围Validate::in(‘a‘,[‘a‘,‘b‘,‘c‘]); // true// 验证是否大于某个值Validate::gt(10,8); // true// 正则验证Validate::regex(100,‘\d+‘); // true

②模型验证(在模型中的验证方式

$User = new User;$result = $User->validate(    [        ‘name‘  => ‘require|max:25‘,        ‘email‘   => ‘email‘,    ],    [        ‘name.require‘ => ‘名称必须‘,        ‘name.max‘     => ‘名称最多不能超过25个字符‘,        ‘email‘        => ‘邮箱格式错误‘,    ])->save($data);if(false === $result){    // 验证失败 输出错误信息    dump($User->getError());}

③控制器验证(控制器中进行验证

如果你需要在控制器中进行验证,并且继承了\think\Controller的话,可以调用控制器类提供的validate方法进行验证,如下:

$result = $this->validate(    [        ‘name‘  => ‘thinkphp‘,        ‘email‘ => ‘thinkphp@qq.com‘,    ],    [        ‘name‘  => ‘require|max:25‘,        ‘email‘   => ‘email‘,    ]);if(true !== $result){    // 验证失败 输出错误信息    dump($result);}

控制器中的验证代码可以简化为:

$result = $this->validate($data,‘User‘);if(true !== $result){    // 验证失败 输出错误信息    dump($result);}

如果要使用场景,可以使用:

$result = $this->validate($data,‘User.edit‘);if(true !== $result){    // 验证失败 输出错误信息    dump($result);}

在validate方法中还支持做一些前置的操作回调,使用方式如下:

$result = $this->validate($data,‘User.edit‘,[],[$this,‘some‘]);if(true !== $result){    // 验证失败 输出错误信息    dump($result);}

 

 

TP5验证规则使用