我创建了一个Scala Play程序,并希望将两个单选按钮合并到同一个表单中。斯卡拉玩!使用2个单选按钮进行表单验证
- 当页面加载时,单选按钮都没有设置值。
- 两个单选按钮选项为yes或no。
我想知道如何验证收音机都让游戏接受表单时:
- 只有第一没有按钮被选中
和
- 当第一个是和第二个是或否按钮被选中。
任何其他情况我想要使用bindFromRequest.fold方法显示错误。
这里是我的模型:
package viewmodels
case class YesNoRadioViewModel2(firstRadio: String, secondRadio:String) {
}
/**
* View model for pages with yes/no style radio questions.
*/
object YesNoRadioViewModel2 {
def apply(form: play.api.data.Form[YesNoRadioViewModel2]) = {
new YesNoRadioViewModel2(
form.data.get("firstRadio").get,
form.data.getOrElse("secondRadio","no"))
}
}
这里是我的形式:
val yesNoRadioForm2 = Form(
mapping(
"firstRadio" -> text.verifying(!_.isEmpty),
"secondRadio" -> text.verifying()
)
(YesNoRadioViewModel2.apply)(YesNoRadioViewModel2.unapply))
这里是我的控制器:
def twoRadioPost: Action[AnyContent] = MyCustomAction.async { implicit request =>
yesNoRadioForm2.bindFromRequest.fold(formWithErrors =>
Future(BadRequest(views.html.myproject.twoRadios(formWithErrors)))
,
model =>
Do something
)
}
任何帮助,将不胜感激!
在此先感谢!
这是辉煌的,谢谢!出于兴趣,使用两种不同的形式嵌套.bindFromRequest()。fold是不好的做法吗?谢谢 – howells699
我从来没有试过这个。 POST请求将一个表单数据嵌入到其主体中,但我可以想象如果需要,可以尝试在控制器中将它绑定到两个不同的模型:) –
我试过了,它工作正常。只要这不是一个普遍的坏习惯,我应该没问题。非常感谢,我很感激 – howells699