Respect Validation: Какое правильное правило проверки, когда форма имеет несколько полей с одинаковым именем?
У меня есть форма, которая имеет только поля:
- вопрос
- выбор
Выбор - это массив, потому что у вопроса больше ответов, и пользователь может добавить столько, сколько мне нужно.
Мне просто нужно проверить, что они не пусты, поэтому я попытался:
$validation = $this->c->validator->validate($request, [
'question' => v::notEmpty(),
'choice[]' => v::ArrayVal()->each()->notEmpty()
]);
Но это не позволяет мне сохранить любую запись. Если я оставлю выбор [] как "выбор", он проверяет каждую запись. Я предполагаю, что правило должно быть неправильным.
1 ответ
Решение
Вы можете использовать валидатор KeySet:
$response = v::keySet(
v::key('question', v::notEmpty()),
v::key('choice', v::arrayVal())
)->validate($request);
В случае если вы используете данное значение:
$request = [
'question' => 'What is your first name?',
'choice' => []
];
проверка возвращается true
,
В случае если вы используете данное значение:
$request = [
'question' => 'What is your first name?',
'choice' => ''
];
проверка возвращается false
,