我有一个"组"以下输入:
始终需要文本输入1。仅在选中复选框时才需要文本输入2。如何通过游戏实现此类验证?目前我有这样的事情:
val myForm: Form[MyData] = Form(
mapping(
"text1" -> text.verifying("Text1 is required", !_isEmpty),
"text2" -> text.verifying("Text2 is required", !_isEmpty),
"check" -> boolean
)
但显然这不是我想要的,因为总是需要text2。有没有办法组合这个来实现这种相互依赖的验证?
根据小麦建议更新 这个解决方案有效,但它有一些我需要克服的怪癖:
我查看了该剧支持的自定义验证器,但我看不出如何使用它们来跨多个字段进行操作。 The example they show仅应用正在验证的表单字段,但没有明显的方法来引用表单中的其他输入。
答案 0 :(得分:1)
您可以从文档中看到它们允许对您创建的表单对象进行临时验证(请参阅documents。)您可以做的是制作验证器:
def validate(text1: String, text2: String, check: Boolean) = if(check) text2.nonEmpty else true
val myForm: Form[MyData](
mapping("text1" -> text.verifying("Text1 is required", !_isEmpty))
)(MyData.unapply)(MyData.apply) verifying ("Text2 is required if check box checked", {
case data => validate(data.text2, data.check)
})
应该可以提供你想要的东西,但我也会查看他们的custom validators部分(因为他们建议这是一个很好的路线。)