我有一個重複字段的表單: 播放形式:如何填充重複的字段?
case class MyForm(topics: List[Int])
val myForm: Form[MyForm] = Form(
mapping(
"topics" -> list(number)
)(MyForm.apply _)(MyForm.unapply _)
)
以及相應的視圖:
@form(...) {
<h2>Topics of interest:</h2>
@for(Topic(id, name, _) <- Topics.all) {
@checkbox(
bidForm(s"topics[$id]"),
'_label -> (name + ":").capitalize,
'value -> id.toString)
}
<input type="submit" id="submit" value="Save">
}
到目前爲止好,如果有一個錯誤在現場和我重新渲染它通過myForm.bindFromRequest
。
我想預先填寫我的數據庫中的數據。與其他類型的字段(number
,text
,option()
等),我能夠像這樣的東西來填充existingMyForm
的:
val existingMyForm = myForm.fill(MyForm(
// Queries the database and return a list of case classes with field id: Int
Topics.of(member).map(_.id)
))
然而,隨着list
這種方法失敗,我必須手工映射:
val existingMyForm = myForm.bind(
Topics.of(member).map(t => ("topics[%s]".format(t.id), t.id.toString)).toMap
)
有沒有更好的方法來做到這一點?
我有同樣的問題! 你修好了嗎?如果是的話,怎麼樣? –
Nop,我仍然使用[hack](https://github.com/OlivierBlanvillain/SlickChair/blob/master/app/controllers/Submitting.scala#L70):( – OlivierBlanvillain