添加其他验证条件并在需要时显示错误

时间:2014-02-04 10:33:13

标签: scala playframework playframework-2.2

我在控制器中有以下代码:

  val addForm = Form(
    tuple("email" -> nonEmptyText, "password" -> nonEmptyText)
  )

  def add = Action { implicit request =>
    Ok(views.html.registration.add(addForm))
  }

  def create = Action { implicit request =>
    addForm.bindFromRequest.fold(
      failure => //....,
      success => //....

create(?或其他任何有意义的方法)方法我想检查一些其他条件,例如,数据库中是否已存在电子邮件。如果是这样,请向视图返回错误,说“此电子邮件已存在”。

我没有在Play的文档中找到任何关于它的内容,只是关于“nonEmpty”等标准限制。

我在哪里以及如何做到这一点?

1 个答案:

答案 0 :(得分:2)

试试这个:

import play.api.data.Mapping
import play.api.data.Forms._
import play.api.data.validation._

val addForm = Form(
  tuple("email" -> freeEmail, "password" -> nonEmptyText)
)

def freeEmail: Mapping[String] = {
  nonEmptyText verifying Constraint[String]("constraint.email") { o: String =>
    if (Email.exists(o) /*your checker here*/) Invalid(ValidationError("Email already exists")) else Valid
  }
}