簡體   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