【发布时间】:2017-09-08 21:43:08
【问题描述】:
我在验证有时只会出现在请求中的输入时遇到问题。
// Controller
public function update(Request $request, User $user)
{
$updateResult = $user->updateUser($request);
return dd($updateResult);
}
// User Model
protected $validation = [
'rules' => [
'email' => [
'sometimes',
'email',
'required',
],
'password' => [
'sometimes',
'min:6',
'required',
],
'first_name' => [
'sometimes',
'required',
],
'last_name' => [
'sometimes',
'required',
],
],
'messages' => [
'email.required' => 'An email is required.',
'email.email' => 'The email must be valid.',
'password.required' => 'A password is required.',
'password.min' => 'Your password must be at least six (6) characters long.',
'first_name.required' => 'Your first name is required.',
'last_name.required' => 'Your last name is required.',
],
];
public function updateUser(Request $request)
{
$validation = Validator::make($request->all(), [
$this->validation['rules'],
$this->validation['messages'],
]);
if ($validation->fails())
{
return $validation;
}
else
{
return "OK";
}
}
所以在一些更新页面中 $request->all() 只会有这些字段的一个子集。但是,即使存在字段,但值为 null,required 也不会触发。
[
'first_name' => null,
'last_name' => 'Davidson',
'job_title' => 'Tech Support',
]
上面的请求数组将返回“OK”...如果我有时从字段中删除,那么当发送部分输入请求时,它会失败说字段是必需的。
我正在清除此处遗漏的一些内容,但通过阅读文档,我认为我已正确配置:
在某些情况下,您可能希望针对 仅当该字段存在于输入数组中时。要快速 完成此操作,将有时规则添加到您的规则列表中:
$v = 验证器::make($data, [ '电子邮件' => '有时|需要|电子邮件', ]);
【问题讨论】:
标签: php laravel validation laravel-5.4