繁体   English   中英

Laravel 验证:如何获取验证结果数组中的可选字段?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM