0

我是 playframework 的新手。我有我的用户模型以及静态方法的随附对象......

case class User(id: Int, username: String, password: String, fullname: String, /
     lastLogin : Date, updatedOn: Date, updatedBy: Int, createdOn: Date, createdBy: Int)

我想为这个类创建一个省略一些细节的表单。目前我有一个 UserForm 案例类

case class UserForm(fullName:String, username: String, password:String, confirm:String)

允许我使用:

val userForm = Form(
    mapping(
        "fullName" -> of[String],
        "username" -> of[String],
        "password" -> of[String],
        "confirm" -> of[String]
    )(UserForm.apply)(UserForm.unapply)
)

这感觉有点Hacker-ish。有没有一种惯用的和更简洁的方法来做到这一点?

4

2 回答 2

3

怎么样

val userForm = Form(
  mapping(
      "fullName" -> text,
      "username" -> text,
      "password" -> text,
      "confirm" -> text
  )(UserForm.apply)(UserForm.unapply)
)

还有更多内置的检查和验证。此处列出了基础知识:http ://www.playframework.com/documentation/2.1.0/ScalaForms

如果您在对象中不需要它们,则可以使用元组

val userForm = Form(
  tuple(
      "fullName" -> text,
      "username" -> text,
      "password" -> text,
      "confirm" -> text
  )
)

在您的情况下,您的元组具有以下类型:(String, String, String, String)您可以像这样使用它:val (fullName, username, password, confirm) = refToTuple

于 2013-02-28T18:42:30.833 回答
3

迟到了,但我刚刚发布了一个实用程序来帮助解决这个问题!使用您的类,您的代码将如下所示:

case class User(id: Int, username: String, password: String, fullname: String, lastLogin : Date, updatedOn: Date, updatedBy: Int, createdOn: Date, createdBy: Int)
object User { implicit val mapping = CaseClassMapping.mapping[User] }

val userForm = Form(implicitly[Mapping[User]])

您可以在 github 上找到将其包含在项目中的源代码和说明:https ://github.com/Iterable/iterable-play-utils

于 2016-10-11T19:37:55.557 回答