2012-07-24 13 views
5

mio validation.yml:Symfony-2 dà messaggio di errore più di una validazione è dato

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

Il mio problema è che se io do "sbagliato-mail" nel compito campo dà due messaggi di errore:

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

in realtà, voglio mostrare solo errore-messaggio alla volta. Ciò significa che dovrebbe verificare la validazione "MinLength" solo se è un'e-mail valida.

risposta

6

Il sequenziamento della convalida può essere eseguito utilizzando sequenze di gruppo. Ho fissato le sequenze di gruppo per il driver YAML solo oggi, quindi potrebbe essere necessario attendere la prossima versione del ramo 2.0 o master.

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

Ora i vincoli nel gruppo "Extra" sarà convalidata solo se tutti i vincoli di gruppo "MyEntity" (vale a dire il gruppo predefinito) successo.

+1

La tua descrizione fa sembrare che una convalida fallita su un altro campo (che rientra nel gruppo MyEntity predefinito) fermerebbe la convalida "MinLength", anche se passasse "Email". È questo il caso? Vorrei una soluzione in cui ogni campo viene convalidato fino a quando fallisce, indipendentemente dagli altri campi. – Craig

+1

Anche alla ricerca di una soluzione simile @Craig. Qualcosa come l'opzione 'breakChainOnFailure' quei giorni in ZF1: http://framework.zend.com/manual/1.12/en/zend.form.elements.html - Ce l'abbiamo in SF2 @webmozart? – webDEVILopers

Problemi correlati