1.独立验证:也就是小范围进行数据验证,不用另外写一个验证类引入;
//首先在当前控制器下引入框架的验证类; use think\Validate; //在需要验证的方法中写入一下代码; //验证规则 $rule = [ 'name' => 'unique:table(表名必须有)|require|max:25', 'age' => 'number|between:1,120', 'email' => 'email',]; //验证错误信息; $msg = [ 'name.require' => '名字不能为空', 'name.unique' => '名字不能重复' 'name.max' => '不能超过25个字符', 'age.number' => '年龄必须是数字', 'age.between' => '年龄在1到120之间', 'email' => '邮箱格式不正确', ]; //需要验证的数据; $data = [ 'name' => '张三', 'age' => 122, 'email' => 'zhangsan@qq.com', ]; $validate = Validate::make($rule)->message($msg); $result = $validate->check($data); if(!$result){ echo $validate->getError(); //ajax返回; // return $info = ['code'=>0,'msg'=>$validate->getError()]; }
2.验证器验证
首先在和控制器平级层创建一个文件夹为validate,里面有文件,文件名对应当前的控制器名,如在admin控制器需要验证,文件名就为admin.php
namespace app\index\validate; use think\Validate; class Admin extends Validate { //验证规则 protected $rule = [ 'name' => 'require|max:25', 'age' => 'number|between:1,120', 'email' => 'email', ]; //返回错误信息 protected $message = [ 'name.require' => '名称必须', 'name.max' => '名称最多不能超过25个字符', 'age.number' => '年龄必须是数字', 'age.between' => '年龄只能在1-120之间', 'email' => '邮箱格式错误', ]; }
在控制器中调用;下面会引入上面2的验证类;
namespace app\index\controller; use think\Controller; class Index extends Controller { public function index() { //需要验证的数据;一般为前端返回的数据; $data = [ 'name' => 'thinkphp', 'email' => 'thinkphp@qq.com', ]; //注意app前面有一个反斜杠; $validate = new \app\index\validate\Admin; // $res = $validate->check($data); if (!$validate->check($data)) { dump($validate->getError()); } } }
3.验证场景
就是在验证类中增加一个规则 protected $scene = [ 'edit' => ['name','age'], 'add' => ['name'], ]; //控制器中 //在验证场景,表示在编辑的时候,只会验证name字段; if (!$validate->scene('edit')->check($data)) { dump($validate->getError()); }