[英]Laravel validation: how to get optional fields in the validated result array?
我正在使用必填和可选字段验证请求。 当请求不包含可选字段时,它会被跳过并且不会在 valid() function 中返回,如何在返回的数组中获取具有空字符串值的可选字段?
input is [‘field_1’ => ‘test’]
$validator = Validator::make($request->all(), [
‘field_1’ => [‘required’],
‘field_2’ => [‘string’]
]);
dd($validator->validated());
current output is [‘field_1’ => ‘test’]
desire output [‘field_1’ => ‘test’, ‘field_2’ => ‘’]
我不知道您使用的是哪个版本的 laravel,但我的回答对几个 laravel 版本有效。 您可以在验证之前检查是否设置field_2
,如果没有设置则做出反应。 下一步是将nullable
作为验证规则添加到field_2
,例如
if (!isset($request->field_2)) {
$request->merge(['field_2' => null]); // or even ['field_2' => '']
}
$validator = Validator::make($request->all(), [
'field_1' => ['required'],
'field_2' => ['nullable', 'string']
]);
更多信息: https://laravel.com/docs/5.7/validation#a-note-on-optional-fields
数据中没有field_2
可供它验证,因此它无法返回不存在的内容。
您可以询问这些字段的请求:
$request->all(['field_1', 'field_2']);
或者将您的验证规则分配给一个数组,然后您可以使用其中的数组键:
$rules = [
'field_1' => '...',
'field_2' => '...',
];
...
$vals = $request->all(array_keys($rules));
dd($vals);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.