2012-06-11 45 views
1

进入Play 2.0,总体而言,风头正劲,伟大的东西。实施DRY表格

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

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

回答

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,但更新的标题和标题文本。

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