Задать вопрос
@roman_vo

Почему не отрабатывает new Assert\Optional при валидации полей формы?

Всем привет!
Почему может не отрабатывать опциональная проверка, когда например поле пустое, иначе получаю ошибку "This value should have exactly 10 characters"
То есть проверка на минимальное количество символов все равно проходит

$validator = Validation::createValidator();

            $constraint = new Assert\Collection([
                'financialpersoninn' => new Assert\Optional([
                    new Assert\Length(['min' => 10, 'max' => 10]),
                    new Assert\Regex('/^[0-9]*$/u')
                ]),
                'CustomsModeCode' => [
                    new Assert\Length(['max' => 2]),
                    new Assert\Regex('/^[0-9]*$/u')
                ],
                'transportidentifierTime' => new Assert\Type(['type' => 'string']),

            ]);

            $violations = $validator->validate($data, $constraint);
  • Вопрос задан
  • 80 просмотров
Подписаться 1 Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 1
Assert\Optional говорит лишь о том что поле может отсутствовать, но если оно присутствует, оно должно соответствовать описанным правилам.

То есть правило из вопроса подразумевает что валидируемые данные могут вовсе не содержать ключа financialpersoninn, и при этом будут считаться валидными. Если же такой ключ присутствует, его значение должно удовлетворять заданным правилам.

Как вариант можно использовать композитные правила AtLeastOneOf.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы