2017-01-28 3 views
0

У меня есть форма в 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

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

0

Решение может использовать дифферент Уровни ошибок: (. Ех 'lv1', 'lv2')

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

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

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

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

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

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