3

Scala を使用して Play 2.1.1 をいじり始めました。いくつかのチュートリアル/サンプル アプリを見て、フォームの作成に使用できるヘルパー メソッドを見つけました。

@(myForm: Form[User])

@helper.form(action = routes.Application.submit) {

    @helper.inputText(myForm("username"))

    @helper.inputPassword(myForm("password"))

}

私はまだこれに反対です。しかし、私が理解している限り、これには基本的に、モデルを「ラップ」するコントローラー内で定義されているフォームオブジェクトが必要です(簡略化):

  val loginForm = Form(
    tuple(
      "email" -> text,
      "password" -> text
    ))
  )

  def login = Action { implicit request =>
    Ok(html.login(loginForm))
  }

Form オブジェクトを介した間接化が「間違った場所にある」ように感じたので、これは驚くべきことでした。私が期待していたのは、次のようなものでした(疑似):

@(user: User)

@helper.form(action = routes.Application.submit) {

    @helper.inputText(() => user.userName)
    @helper.inputPassword(() => user.password)
}

...そのため、コントローラー内で Form オブジェクトを定義する必要はありません。フォーム関連のものはすべて、ビュー テンプレート内に配置されます。「this-will-be-rendered-into-a-form」ロジックをコントローラーに混在させることは、SOC の軽微な違反のように思えます。

今私は疑問に思っています: これは単に Play でのやり方なのか、それとも私が何かを見逃したのでしょうか? これを処理する「より良い」方法はありますか?

乾杯、アレックス

4

1 に答える 1