加载中...

控制器验证


如果你需要在控制器中进行验证,并且继承了\think\Controller的话,可以调用控制器类提供的validate方法进行验证,如下:

  1. $result = $this->validate(
  2. [
  3. 'name' => 'thinkphp',
  4. 'email' => 'thinkphp@qq.com',
  5. ],
  6. [
  7. 'name' => 'require|max:25',
  8. 'email' => 'email',
  9. ]);
  10. if(true !== $result){
  11. // 验证失败 输出错误信息
  12. dump($result);
  13. }

如果定义了验证器类的话,例如:

  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. $result = $this->validate($data,'User');
  2. if(true !== $result){
  3. // 验证失败 输出错误信息
  4. dump($result);
  5. }

如果要使用场景,可以使用:

  1. $result = $this->validate($data,'User.edit');
  2. if(true !== $result){
  3. // 验证失败 输出错误信息
  4. dump($result);
  5. }

在validate方法中还支持做一些前置的操作回调,使用方式如下:

  1. $result = $this->validate($data,'User.edit',[],[$this,'some']);
  2. if(true !== $result){
  3. // 验证失败 输出错误信息
  4. dump($result);
  5. }

还没有评论.