实施DRY表格

时间:2012-06-11 08:22:16

标签: forms dry playframework-2.0

进入Play 2.0,整体而言,被吹走,很棒的东西。

无论如何,想知道如何在Play中实现DRY表格?如果你看看创造&编辑Computer Database Sample中的示例,您将看到表单元素被重复。只有4个字段(在示例表单中),没什么大不了的,但是当您处理大型复杂表单和/或处理许多CRUD模型时,复制将成为一个更大的维护问题。

在绑定端(form.bindFromRequestform.fill(Foo))上,实现对于创建/编辑操作非常优雅;模板层中是否有相应的解决方案?

1 个答案:

答案 0 :(得分:0)

k,这就是我提出的处理注册,更新方案的原因:

// views.subscription.signup.scala.html
@(_form: Form[com.company.model.Subscription], target: play.api.mvc.Call)
@import helper._

@cart("Foobar Registration") {
  <h1>Join Foobar Today!</h1>
  @form(action = target, 'id -> "subscriptionForm", 'class -> "form-horizontal") {
    @fields(_form) // include formfields
  }
}

// views.subscription.fields.scala.html
@(_form: Form[com.company.model.Subscription])
@import helper._

@inputText(field = _form("firstName"), '_label-> "First Name*", 'class-> "required")
@inputText(field = _form("lastName"), '_label-> "Last Name*", 'class-> "required")
....  

然后,为了续订,只需创建与signup.scala.html相同的shell,但需要更新标题和标题文本。

同样的原则适用于任何共享的创建/编辑表单状态。