study-note

6. フォーム入力

目次

フォームとは

フォーム用のデータ構造定義

case class LoginData(email: String, password: String)

フォーム定義

val loginForm: Form[LoginData] = Form(
  mapping(
    "email" -> email,
    "password" -> nonEmptyText
  )(LoginData.apply)(LoginData.unapply)
)

フォームデータの受け取り

loginForm.bindFromRequest.fold(
  formWithErrors => BadRequest("入力エラー"),        // 入力に不備がある場合
  loginData => Ok("ログイン成功: " + loginData.email) // 入力が正常な場合
)

テンプレート側(HTML)との連携

@helper.form(action = routes.LoginController.login()) {
  @helper.inputText(loginForm("email"))
  @helper.inputPassword(loginForm("password"))
  <input type="submit" value="ログイン">
}


7. JSON API