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