ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
> ## 设置验证规则 ``` // 1.数组传入(针对在控制器中定义验证) $rules = [ 'name' => 'require|max:25', 'age' => 'number|between:1,120', ]; $validate = new Validate($rules); // 2.动态追加(定义了验证器的情况下,控制器需要单独验证某个字段,可以追加) $rules = [ 'name' => 'require|max:25', 'age' => 'number|between:1,120', ]; $validate = new Validate($rules); $validate->rule('zip', '/^\d{6}$/'); $validate->rule([ 'email' => 'email', ]); ``` > ## 规则定义格式(`数组格式和字符串格式可以混用`) ``` // 1.字符串形式,用 | 分隔 $rules = [ 'name' => 'require|max:25', 'age' => 'number|between:1,120', ]; // 2.数组形式 $rules = [ 'name' => 'require|max:25', 'age' => 'number|between:1,120', ]; ``` > ## 闭包函数验证 ``` // 第一个参数是当前字段的值,第二个参数是全部数据 $validate = new \think\Validate([ 'name' => function($value,$data) { return 'thinkphp'==$value ? true : false; }, ]); ``` > ## 自定义验证规则 ``` // 1.验证器类中的写法 namespace app\index\validate; use think\Validate; class User extends Validate { protected $rule = [ 'name' => 'checkName:thinkphp', ]; protected $message = [ 'name' => '用户名必须', ]; // 自定义验证规则 (第一个是被验证的数据,第二个是验证规则,第三个是所有的数据) protected function checkName($value,$rule,$data) { return $rule == $value ? true : '名称错误'; } } // 2.控制器中的写法 $validate = new Validate(['name' => 'checkName:1']); $validate->extend('checkName', function ($value, $rule) { return $rule == $value ? true : '名称错误'; }); $data = ['name' => 1]; $result = $validate->check($data); // 支持批量注册 $validate->extend([ 'checkName'=> function ($value, $rule) { return $rule == $value ? true : '名称错误'; }, 'checkStatus'=> [$this,'checkStatus'] ]); ``` > ## 设置字段信息 ``` // 验证规则 $rule = [ 'name' => 'require|max:25', 'age' => 'number|between:1,120', 'email' => 'email', ]; // 设置字段信息 $field = [ 'name' => '名称', 'age' => '年龄', 'email' => '邮箱', ]; // 待验证的数据 $data = [ 'name' => 'thinkphp', 'age' => 10, 'email' => 'thinkphp@qq.com', ]; $validate = new Validate($rule, [] , $field); $result = $validate->check($data); ```