【ThinkPHP】5.0 完全开发手册 / 控制器验证

控制器验证

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

$result = $this->validate(
[
'name'  => 'thinkphp',
'email' => 'thinkphp@qq.com',
],
[
'name'  => 'require|max:25',
'email'   => 'email',
]);
if(true !== $result){
// 验证失败 输出错误信息
dump($result);
}

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

namespace app\index\validate;

use think\Validate;

class User extends Validate
{
protected $rule = [
'name'  =>  'require|max:25',
'email' =>  'email',
];

protected $message = [
'name.require'  =>  '用户名必须',
'email' =>  '邮箱格式错误',
];

protected $scene = [
'add'   =>  ['name','email'],
'edit'  =>  ['email'],
];
}

控制器中的验证代码可以简化为:

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

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

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

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

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