[TOC] ## 独立验证 ``` $validate = new Validate([ 'name' => 'require|max:25', 'email' => 'email' ]); $data = [ 'name' => 'thinkphp', 'email' => 'thinkphp@qq.com' ]; if (!$validate->check($data)) { dump($validate->getError()); } ``` ## 验证模型 ``` namespace app\index\validate; use think\Validate; class User extends Validate { protected $rule = [ 'name' => 'require|max:25', 'email' => 'email', ]; } ``` 使用 ``` $data = [ 'name'=>'thinkphp', 'email'=>'thinkphp@qq.com' ]; $validate = Loader::validate('User'); $validate = validate('User'); if(!$validate->check($data)){ dump($validate->getError()); } ``` ## 验证规则 ``` class User extends Validate { protected $rule = [ 'name' => 'require|max:25', 'age' => 'number|between:1,120', 'email' => 'email', 'name1' => 'checkName:thinkphp', ]; protected $message = [ 'name.require' => '名称必须', 'name.max' => '名称最多不能超过25个字符', 'age.number' => '年龄必须是数字', 'age.between' => '年龄只能在1-120之间', 'email' => '邮箱格式错误', ]; // 自定义验证规则 protected function checkName($value,$rule,$data) { return $rule == $value ? true : '名称错误'; } } ``` ## 场景 ``` protected $scene = [ 'edit' => ['name','age'], ]; // 使用 $result = $validate->scene('edit')->check($data); ``` ## 控制器验证 ``` $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.edit'); if(true !== $result){ // 验证失败 输出错误信息 dump($result); } ``` ## 模型验证 ``` 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'], ]; } // 使用 $User = new User; // 调用当前模型对应的User验证器类进行数据验证 $result = $User->validate(true)->save($data); // 调用Member验证器类进行数据验证 //$result = $User->validate('Member')->save($data); //使用场景 // $result = $User->validate('User.edit')->save($data); if(false === $result){ // 验证失败 输出错误信息 dump($User->getError()); } ``` ## 静态调用 ``` // 日期格式验证 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 ```