教程 > laravel 教程 > 阅读:53

laravel 创建validator——迹忆客-ag捕鱼王app官网

手动创建 验证器 validator

如果我们不想在request上使用validate方法,那么我们可以使用validator facade中的make方法手动创建一个验证器实例:

all(), [
            'title' => 'required|unique:posts|max:255',
            'body' => 'required',
        ]);
        if ($validator->fails()) {
            return redirect('post/create')
                        ->witherrors($validator)
                        ->withinput();
        }
        // store the blog post...
    }
}

make方法的第一个参数是需要验证的请求数据,第二个参数是用于验证的验证规则。

如果验证失败,可以使用witherrors方法将错误消息保存到session会话中。使用此方法时,$errors变量将在重定向后自动绑定到视图中,从而使我们可以很容易地将其显示在页面上。witherrors方法的参数可以是验证器,一个messagebag或php 数组。

自动重定向

如果我们想手动创建一个验证器实例,但仍然利用请求validate方法提供的自动重定向功能,则可以在验证器实例上调用validate方法。如果验证失败,则将自动重定向用户,或者在ajax请求的情况下,将返回json响应:

validator::make($request->all(), [
    'title' => 'required|unique:posts|max:255',
    'body' => 'required',
])->validate();

如果验证失败,则可以使用validatewithbag方法将错误消息存储在命名错误包中:

validator::make($request->all(), [
    'title' => 'required|unique:posts|max:255',
    'body' => 'required',
])->validatewithbag('post');

命名错误包

如果我们在一个页面上有多个表单,则不妨为messagebag错误命名,从而使我们可以检索特定表单的错误消息。可以使用witherrors来实现,它的第二个参数则是用来指定该请求表单的错误信息的名称:

return redirect('register')
            ->witherrors($validator, 'login');

然后,我们可以从$errors 变量中访问为messagebag命名的实例:

{{ $errors->login->first('email') }}

验证完成后调用的方法

验证程序还允许我们在验证完成后调用回调函数。这使我们可以轻松地执行进一步的验证,甚至可以将更多错误消息添加到消息集合中。可以用validator 实例上的after方法实现:

$validator = validator::make(...);
$validator->after(function ($validator) {
    if ($this->somethingelseisinvalid()) {
        $validator->errors()->add('field', 'something is wrong with this field!');
    }
});
if ($validator->fails()) {
    //
}

查看笔记

扫码一下
查看教程更方便
网站地图