例如,我希望输入应为nonEmptyText
和email
。
如果用户未输入任何内容,则会显示错误消息The field is required
,如果用户输入的电子邮件无效,则会显示Invalid email
。
但我发现,我可以使用一个:
val loginForm = Form("email"->nonEmptyText)
或:
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
看起来像play将email
和nonEmpty
的两条错误消息组合在一起,但这不是我想要的。我希望当用户不输入时,该消息仅为:
This field is required
不
Valid email required, This field is required
UPDATE2
我发现显示组合错误的原因在helper.twitterBootstrapFieldConstructor.scala.html
,有:
<span class="help-inline">@elements.errors(elements.lang).mkString(",")</span>
它将所有错误与,
相结合。
就我而言,它应该是:
<span class="help-inline">@elements.errors(elements.lang).lastOption</span>
此处lastOption
适用于nonEmpty
。
但我认为headOption
更好,但是:
val loginForm = Form("email" -> (nonEmptyText verifying email))
不起作用 - email
没有约束,所以我们必须为自己定义一个?
答案 0 :(得分:2)
根据Form documentation,您可以使用verifying
方法向映射添加约束。 Constraints
object中已经定义了一些约束。所以你可以写:
val loginForm = Form("email" -> (email verifying nonEmpty))