Проверка Laravel: как получить необязательные поля в проверенном массиве результатов? - PullRequest
0 голосов
/ 30 октября 2019

Я проверяю запрос с обязательными и необязательными полями. Если запрос не содержит необязательное поле, он пропускается и не возвращается в функцию validated (), как я могу получить необязательное поле с пустым строковым значением в возвращаемом массиве?

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’ => ‘’]

Ответы [ 2 ]

1 голос
/ 30 октября 2019

Я не знаю, какую версию 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

0 голосов
/ 30 октября 2019

В данных нет field_2 для проверки, поэтому он не может вернуть то, чего там нет.

Вы можете запросить запрос для этих полей:

$request->all(['field_1', 'field_2']);

Или назначьте свои правила проверки для массива, после чего вы можете использовать ключи массива из него:

$rules = [
    'field_1' => '...',
    'field_2' => '...',
];

...

$vals = $request->all(array_keys($rules));
dd($vals);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...