2017-01-28 7 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

ソリューションは、エラーレベルにを貴様を使用することができます

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 
} 

は、これを達成する方法は他にもありますが、あなたは私達にあなたのコードのロジックの詳細を与える必要があります。

関連する問題