1

Play 2.0 を始めて、全体的に、吹き飛ばされた、素晴らしいものです。

とにかく、どうすれば Play で DRY フォームを実現できるのでしょうか? Computer Database Sampleの create & edit の例を見ると、フォーム要素が繰り返されていることがわかります。わずか 4 つのフィールド (サンプル フォーム) では大したことはありませんが、大規模で複雑なフォームを処理したり、多くの CRUD モデルを処理したりする場合、重複はより大きなメンテナンスの問題になります。

バインディング側 (form.bindFromRequestおよびform.fill(Foo)) では、実装は作成/編集操作に対して非常に洗練されています。テンプレート層に対応するソリューションはありますか?

4

1 に答える 1

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 と同じシェルを作成しますが、更新のタイトルとヘッダー テキストを使用します。

同じ原則が、共有された作成/編集フォームの状態に適用されます。

于 2012-06-11T16:36:38.137 に答える