我創建了一個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