Formオブジェクトを使い、その値をScala型のデータに変換(バインド)して受け取るcase class LoginData(email: String, password: String)
case classでデータ構造を定義するval loginForm: Form[LoginData] = Form(
mapping(
"email" -> email,
"password" -> nonEmptyText
)(LoginData.apply)(LoginData.unapply)
)
Form[LoginData]:LoginData型のデータを受け取るフォームを意味する"email":フォームのinput name属性email:Scala側の型(形式チェックも含む)bindFromRequest:リクエストの中にあるフォームデータを、Scalaのデータ型(case class)に変換する処理loginForm.bindFromRequest.fold(
formWithErrors => BadRequest("入力エラー"), // 入力に不備がある場合
loginData => Ok("ログイン成功: " + loginData.email) // 入力が正常な場合
)
@helper.form(action = routes.LoginController.login()) {
@helper.inputText(loginForm("email"))
@helper.inputPassword(loginForm("password"))
<input type="submit" value="ログイン">
}
@helper.form(...):フォームの開始タグと送信先を生成@helper.inputText(...):inputタグを自動生成し、エラー表示などもしてくれる