加载中...

模型验证


在模型中的验证方式如下:

  1. $User = new User;
  2. $result = $User->validate(
  3. [
  4. 'name' => 'require|max:25',
  5. 'email' => 'email',
  6. ],
  7. [
  8. 'name.require' => '名称必须',
  9. 'name.max' => '名称最多不能超过25个字符',
  10. 'email' => '邮箱格式错误',
  11. ]
  12. )->save($data);
  13. if(false === $result){
  14. // 验证失败 输出错误信息
  15. dump($User->getError());
  16. }

第二个参数如果不传的话,则采用默认的错误提示信息。

如果使用下面的验证器类的话:

  1. namespace app\index\validate;
  2. use think\Validate;
  3. class User extends Validate
  4. {
  5. protected $rule = [
  6. 'name' => 'require|max:25',
  7. 'email' => 'email',
  8. ];
  9. protected $message = [
  10. 'name.require' => '用户名必须',
  11. 'email' => '邮箱格式错误',
  12. ];
  13. protected $scene = [
  14. 'add' => ['name','email'],
  15. 'edit' => ['email'],
  16. ];
  17. }

模型验证代码可以简化为:

  1. $User = new User;
  2. // 调用当前模型对应的User验证器类进行数据验证
  3. $result = $User->validate(true)->save($data);
  4. if(false === $result){
  5. // 验证失败 输出错误信息
  6. dump($User->getError());
  7. }

如果需要调用的验证器类和当前的模型名称不一致,则可以使用:

  1. $User = new User;
  2. // 调用Member验证器类进行数据验证
  3. $result = $User->validate('Member')->save($data);
  4. if(false === $result){
  5. // 验证失败 输出错误信息
  6. dump($User->getError());
  7. }

同样也可以支持场景验证:

  1. $User = new User;
  2. // 调用Member验证器类进行数据验证
  3. $result = $User->validate('User.edit')->save($data);
  4. if(false === $result){
  5. // 验证失败 输出错误信息
  6. dump($User->getError());
  7. }

还没有评论.