控制器验证

最后更新于:2022-04-01 21:25:11

如果你需要在控制器中进行验证,并且继承了`\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); } ~~~
';