2012-07-24 7 views
5

マイvalidation.ymlが指定されている複数の検証エラーメッセージを表示します。symfonyの-2は

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

私の問題は、私はタスクフィールドに「間違ったメール」を与える場合、それは2人のエラーメッセージを与えることです。

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

実際には、一度に1つのエラーメッセージしか表示しません。 これは有効な電子メールである場合にのみ、検証 "MinLength"をチェックする必要があることを意味します。

答えて

6

グループシーケンスを使用して検証シーケンスを実行できます。今日はYAMLドライバのグループシーケンスを固定したので、2.0またはmasterブランチの次のリリースを待つ必要があります。グループ内のすべての制約「MyEntity」(すなわちデフォルト・グループ)が成功した場合

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

は今、「エクストラ」グループ内の制約にのみ有効となります。

+1

あなたの説明は、別のフィールド(デフォルトのMyEntityグループに属する)の検証に失敗したように聞こえるため、「電子メール」が通過しても「最小長」の検証が中止されます。それは事実ですか?私は、他のフィールドに関係なく、失敗するまで各フィールドが検証されるソリューションが必要です。 – Craig

+1

似たような解決策も探しています@Craig。当時のZF1の「breakChainOnFailure」オプションのようなもの:http://framework.zend.com/manual/1.12/en/zend.form.elements.html - これはSF2 @webmozartにありますか? – webDEVILopers