加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 如何使用有条件的字段创建Playframework 2.0表单?

发布时间:2020-12-16 08:58:50 所属栏目:安全 来源:网络整理
导读:假设我想要一个带有字段,电子邮件的表格,只有在他们没有输入电话号码时才需要.此外,只有在他们没有收到电子邮件时才需要电话号码,我该怎么办?做这个? 如果需要NoValid,我想做这样的事情. import play.api.data._import play.api.data.Forms._import play.a
假设我想要一个带有字段,电子邮件的表格,只有在他们没有输入电话号码时才需要.此外,只有在他们没有收到电子邮件时才需要电话号码,我该怎么办?做这个?

如果需要NoValid,我想做这样的事情.

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

case class User(email: Option[String] = None,age: Option[Int])

val userForm = Form(
  mapping(
    "email" -> email.verifying(requiredNoValid(phoneNumber)),"phoneNumber" -> number.verifying(requiredNoValid(email))
  )(User.apply)(User.unapply)
)

我已经在Play 1.X中为此构建了我自己的解决方案,但我想放弃其中的大部分内容并使用Play 2表单为我执行此操作,如果功能在那里或者是否有办法通过实现验证器或约束.

解决方法

您还可以在多个字段上添加验证.举个简单的例子:

val userForm = Form(
  mapping(
    "email" -> optional(email),"phoneNumber" -> optional(number)
  ) verifying("You must provide your email or phone number.",{ 
      case (e,p) => 
        isValidEmail(e) || isValidPhoneNumber(p)
  })(User.apply)(User.unapply)
)

在外部验证中,您可以访问电子邮件和电话号码,并可以进行交叉验证.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读