我们知道laravel的验证数据方式是多种多样的。我们来看看几种方式
1.控制器里的验证
直接在控制器里加上
$this->validate($request, [
'username' => ['required', 'string'],
'password' => ['required', 'string']
])
比较好理解,当然也可以这样写:
$this->validate($request, [
'username' => 'required|string',
'password' => 'required|string'
])
2.Requests里的验证
创建request一般说明数据需要比较复杂的验证,这样分离处理的话更好管理和修改。
php artisan make:request UsersRequests
在app/Http/Requests这个目录下面多了一个文件UsersRequest.php。我们在这里一般有三个方法,rules(), messages(), attributes()。rules()里面写的是规则数组,messages()里写的是错误信息,attributes()里写的通常是替换attribute的写法。让我们看看一个例子。
3.闭包closure在验证规则数组
这里适合比较复杂一点的情况,例如有几种情况。可以直接在验证规则数组里插入。
直接在validate数组里加上一个闭包。例如
$user = $request->user();
$this->validate($request, [
'username' => ['required', 'string'],
'password' => ['required', function($attribute, $value, $fail) use ($user){
if(!hash::check($value, $user->password){
$fail("密码错误!");
}
}]
])
这个闭包接受 3 个参数,分别是参数名、参数值和错误回调。注意的。这里比较重要的是attribute当然就是password了,不必理会。后面的use一般导入的是要比较的数据。
网友评论