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