2012-07-24 15 views
5

Mein validation.yml gegeben:Symfony-2 gibt mehr als eine Validierung Fehlermeldung

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

Mein Problem ist, dass wenn ich „falsch-E-Mail“ in dem Task-Bereich gebe es zwei Fehlermeldungen gibt:

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

Eigentlich möchte ich nur eine Fehlermeldung auf einmal zeigen. Das bedeutet, es sollte nur dann auf die Validierung "MinLength" überprüft werden, wenn es sich um eine gültige E-Mail handelt.

Antwort

6

Die Validierungssequenz kann mithilfe von Gruppensequenzen durchgeführt werden. Ich habe Gruppensequenzen für den YAML-Treiber erst heute festgelegt, sodass Sie möglicherweise auf die nächste Version des 2.0- oder Master-Zweigs warten müssen.

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

Nun sind die Einschränkungen in der Gruppe „Extra“ wird nur geprüft werden, wenn alle Einschränkungen in der Gruppe „MyEntity“ (das heißt die Standardgruppe) gelingen.

+1

Ihre Beschreibung klingt wie eine fehlgeschlagene Validierung in einem anderen Feld (das in die Standardgruppe MyEntity fällt) würde die Validierung 'MinLength' verhindern, selbst wenn 'Email' erfolgreich war. Ist das der Fall? Ich möchte eine Lösung, bei der jedes Feld validiert wird, bis es fehlschlägt, unabhängig von den anderen Feldern. – Craig

+1

Auf der Suche nach einer ähnlichen Lösung @Craig. So etwas wie die 'breakChainOnFailure'-Option dieser Tage in ZF1: http://framework.zend.com/manual/1.12/en/zend.form.elements.html - Haben wir das in SF2 @webmozart? – webDEVILopers

Verwandte Themen