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 でのやり方なのか、それとも私が何かを見逃したのでしょうか? これを処理する「より良い」方法はありますか?
乾杯、アレックス