我刚开始使用 Scala 玩 Play 2.1.1。通过一些教程/示例应用程序,我遇到了可用于创建表单的辅助方法,例如:
@(myForm: Form[User])
@helper.form(action = routes.Application.submit) {
@helper.inputText(myForm("username"))
@helper.inputPassword(myForm("password"))
}
我仍然是一个n00b。但据我了解,这基本上需要在控制器中定义一个表单对象,该对象“包装”模型(简化):
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-in-a-form”逻辑混合到控制器中对我来说似乎是对 SOC 的轻微违反。
现在我想知道:这只是在 Play 中做事的方式,还是我错过了什么?有没有“更好”的方法来处理这个问题?
干杯,亚历克斯