Как остановить проверку поля при первой ошибке?

У меня есть форма в Symfony 2.8 с таким полем:

$builder->add('a', TextType::class, [
'label' => '',
'constraints' => [
new NotBlank(
[
'message' => 'foo'
]
),
new Regex(
[
'pattern' => '/^\d+$/',
'message' => 'bar'
]
),
new GreaterThan(
[
'value' => 0,
'message' => 'empty'
]
)
]
]);

`

Когда значение поля пустое, у нас появляется сообщение об ошибке из каждого ограничения. Как предотвратить выполнение ограничений, определенных после первого ограничения, которое не удалось?

0

Решение

Я не знаю, есть ли более простое решение вашей проблемы, но вы могли бы использовать Перезвоните проверить поле и добавить в него сообщение об ошибке при первой неудачной проверке.

0

Другие решения

Решением может быть использование различий Уровни ошибок:

http://symfony.com/doc/current/validation/severity.html

 new NotBlank(
[
'message' => 'foo',
'payload' =>
[
'severity' => 'lv1'
]
]
),
...

Если вы устанавливаете разные уровни (например, ‘lv1’, ‘lv2’), вы можете просто создать логику показа для ваших ошибок, выбирая, что показывать.

Альтернативный способ — проверить каждое свойство вашей сущности на наличие ошибок:

$errors = $this->get('validator')->validateProperty($entity, 'name of the property');
if (count($errors)) {
// Show only the first error
}

Есть и другие способы добиться этого, но вы должны предоставить нам более подробную информацию о вашей логике кода.

0

По вопросам рекламы [email protected]