2012-07-24 11 views
5

Moja validation.yml jest danySymfony-2 daje komunikat o błędzie więcej niż jeden walidacji

task: 
     - Email: 
       message: The email "{{ value }}" is not a valid email. 
     - MinLength: { limit: 50, message: You must be 50 or under to enter. } 

Mój problem jest to, że jeśli dam „Wrong-email” w zadaniu-field daje dwa komunikaty o błędach:

The email "wrong-email" is not a valid email. 
You must be 50 or under to enter. 

Właściwie chcę wyświetlać tylko jeden komunikat o błędzie na raz. Oznacza to, że powinien sprawdzać poprawność "MinLength" tylko wtedy, gdy jest to poprawny e-mail.

Odpowiedz

6

Sekwencjonowanie walidacji można przeprowadzić za pomocą sekwencji grup. Naprawiłem sekwencje grup dla sterownika YAML tylko dzisiaj, więc być może trzeba będzie poczekać na kolejne wydanie gałęzi 2.0 lub master.

MyEntity: 
    group_sequence: [MyEntity, Extra] 
    properties: 
     task: 
      - Email: { message: ... } 
      - MinLength { limit: 50, message: ..., groups: Extra } 

Teraz ograniczenia w grupie „Extra” będą sprawdzane tylko wtedy, gdy wszystkie ograniczenia w grupie „MyEntity” (czyli grupa domyślna) sukces.

+1

Twój opis sprawia, że ​​brzmi to jak nieudana walidacja na innym polu (które należy do domyślnej grupy MyEntity) uniemożliwiłoby walidację "Min długości", nawet jeśli minie komunikat "E-mail". Czy tak jest? Chciałbym rozwiązanie, w którym każde pole zostanie zatwierdzone, dopóki nie zawiedzie, niezależnie od innych pól. – Craig

+1

Szukam również podobnego rozwiązania @Craig. Coś takiego jak opcja 'breakChainOnFailure' w tych dniach w ZF1: http://framework.zend.com/manual/1.12/en/zend.form.elements.html - Czy mamy to w SF2 @webmozart? – webDEVILopers

Powiązane problemy