Laravel FormRequest проверяет минимальную длину строки только в минимальном количестве полей ввода - PullRequest
0 голосов
/ 24 марта 2020

В моем приложении laravel (5.7) у меня есть запрос формы с массивом полей ввода. Массив «ответы» имеет 8 различных полей ввода. До сих пор у меня было правило проверки, которое проверяет, что каждый элемент имеет длину не менее 10 символов.

class MyFormRequest extends FormRequest
{
    public function rules()
    {
        $rules = [
                    'answers'                  =>'required',
                    'answers.*'                =>'required|min:10', 
        ];
    }
}

, но я хочу изменить требование, чтобы оно применялось только к 4 полям ввода независимо от порядка. Так, если, например, пользователь заполнил поля ввода с номером 1,5,6,8, каждое из которых содержит 10 символов, форма будет принята, хотя поля 2,3,4,7 пусты. Как мне этого добиться? Я прочитал в документации, что иногда можно использовать правило иногда, но примеры используют его в контроллере, и я не понимаю, как применить пользовательское правило иногда в классе FormRequest.

Заранее спасибо!

1 Ответ

0 голосов
/ 24 марта 2020

Попробуйте это;

$rules = [
    'answers' => 'required|array|min:4',
    'answers.*' => 'sometimes|min:10', 
];

означает;

"ответы" -> ответы - это массив, содержащий не менее 4 индексов,

"ответы. *" -> в массиве ответов, индексы должны проверяться при его наличии

Проверка Проверка при наличии и Проверка массивов

...