首先是验证层的定义
namespace app\index\validate;use think\Validate;class User 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' => '邮箱格式错误', ];
在对应的user层可以使用
namespace app\index\controller;use think\Controller;class Index extends Controller{ public function index() { $data = [ 'name' => 'thinkphp', 'email' => 'thinkphp@qq.com', ]; $validate = new \app\index\validate\User; if (!$validate->check($data)) { dump($validate->getError()); } }}
这是一种比较典型的使用验证层的方法
还有就是一种数据验证
namespace app\index\validate;use think\Validate;class User extends Validate{ protected $rule = [ 'name' => 'checkName:thinkphp', 'email' => 'email', ]; protected $message = [ 'name' => '用户名必须', 'email' => '邮箱格式错误', ]; // 自定义验证规则 protected function checkName($value,$rule,$data=[]) { return $rule == $value ? true : '名称错误'; }}
当然在任何时候都可以在controller层进行验证数据,而不需要去Validata层追加文件进行规则写入
前提是use think\Validate;
$validate = Validate::make([ 'name' => 'require|max:25', 'email' => 'email']);
还有就是规则的验证场景定义:
例如我们对用户的入库操作数据需要进行验证,
但是后期唯一操作不需要在进行验证操作等实际应用:
$data = [ 'name' => 'thinkphp', 'age' => 10, 'email' => 'thinkphp@qq.com',];$result = $this->validate($data,'app\index\validate\User.edit');if(true !== $result){ // 验证失败 输出错误信息 dump($result);}