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

    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. }