2012-03-16 14 views
1

たとえば、入力はnonEmptyTextemailである必要があります。play2で2つのバリデータをどのように組み合わせることができますか?

ユーザが何も入力しないと、エラーメッセージThe field is requiredが表示されます。無効なメールが入力された場合は、Invalid emailと表示されます。

しかし、私は、私はちょうど1を使用することができますが見つかりました:

val loginForm = Form("email"->nonEmptyText) 

か:以降の1のために

val loginForm = Form("email"->email) 

をユーザが入力しない場合、それはまだある、Invalid emailが表示されます私が望むものではありません。

UPDATE1

私はJulien's answerを試してみました:

val loginForm = Form("email" -> (email verifying nonEmpty)) 

ユーザ入力は何も、エラーメッセージがなるとき:

Valid email required, This field is required 

プレイがemailの2つのエラーメッセージを組み合わせたように見えるとnonEmpty一緒に、これは私が欲しいものではありません。

This field is required 

ない:

Valid email required, This field is required 

アップデート2私はそれが、helper.twitterBootstrapFieldConstructor.scala.htmlである組み合わせのエラーを表示する理由を見つけ

ユーザーではない入力は、メッセージのみであるとき、私は願っています次のとおりです。

<span class="help-inline">@elements.errors(elements.lang).mkString(",")</span> 

,のエラー。

私の場合のために

、それは次のようになります。ここでは

<span class="help-inline">@elements.errors(elements.lang).lastOption</span> 

lastOptionnonEmptyためです。

しかし、私はheadOptionが優れていると思いますが、:

val loginForm = Form("email" -> (nonEmptyText verifying email)) 

が動作しない - そこemailのない制約がありませんので、私たちは自分自身のための1つを定義したする必要がありますか?

答えて

2

Form documentationによれば、verifyingメソッドを使用してマッピングに制約を追加できます。 Constraints objectには既にいくつかの制約が定義されています。あなたは書くことができます:

val loginForm = Form("email" -> (email verifying nonEmpty)) 
+0

ありがとう! 'email verify nonEmpty'は'() 'で囲まれているべきですか? – Freewind

+0

更新された質問 – Freewind

+0

を参照してください。2番目の問題は、現在のプレイ2のバグ(IMHO)です。0、[この問題](https://play.lighthouseapp.com/projects/82401/tickets/249-the-email-mapping-should-not-raise-a-validation-error-when-the-value- is-empty#ticket-249-1)。 あなたは '()'の方が正しいです –

関連する問題