我们如何创建复选框并使用scala将它们与play2.0中的表单绑定。
如果我有
val placeForm = Form(
mapping(
"id" -> ignored(NotAssigned: Pk[Long]),
"url_key" -> nonEmptyText,
"title" -> optional(text),
"page_id" -> optional(longNumber)
)(models.Place.apply)(models.Place.unapply)
)
我创建了这样的表单。
@form(routes.Page.save) {
@form(routes.Page.save) {
<fieldset>
@inputText(pageForm("title"), '_label -> "Title")
@inputText(pageForm("template"), '_label -> "Template") <label>Options:</label>
<div class="input">
<label>note <input type="checkbox" name="options[]" value="0">
</label> <label>About US <input type="checkbox" name="options[]"
value="0">
</label> <label>Facebook <input type="checkbox" name="options[]"
value="0">
</label> <label>Twitter <input type="checkbox" name="options[]"
value="0">
</label> <label>Hotmail <input type="checkbox" name="options[]"
value="0">
</label> <label>Something <input type="checkbox" name="options[]"
value="0">
</label>
</div>
</fieldset>
现在我想要不要简单的html创建这些复选框并将这些复选框值绑定到表单中
任何人都可以帮助我
答案 0 :(得分:1)
val placeForm
的结构必须与您在模板中呈现的表单相匹配。
例如:
val placeForm = Form(
mapping(
"id" -> ignored(NotAssigned: Pk[Long]),
"title" -> optional(text),
"template" -> optional(text),
"checkbox1" -> text
"checkbox2" -> text
) // ... here construction and deconstruction functions
)
您的模板可能如下所示:
@form(routes.Page.save) {
<fieldset>
@inputText(pageForm("title"), '_label -> "Title")
@inputText(pageForm("template"), '_label -> "Template")
<label>Options:</label>
<div class="input">
<label> 1 <input type="checkbox" name="checkbox1" value="1"> </label>
<label> 2 <input type="checkbox" name="checkbox2" value="2"> </label>
</div>
</fieldset>
}
现在了解这些复选框是非常重要的。如果你想将值绑定到case class Place
并且你的表单结构完全匹配你的case类,你可以使用apply和unaplly方法,如果没有...你必须使用自定义函数...
((title, template, checkbox1, checkbox2)=> Place(title, template, checkbox1, checkbox2)) //construct function
((place : Place) => Some((place.title, place.template, place.property_that_correspond_to_checkbox1_value,place.property_that_correspond_to_checkbox2_value)) // deconstruct function
或者,您可以使用tuple
代替mapping
进行表单构建,然后将您的值简单地视为元组值