ちょっとした趣味アプリを書いています。さて、私のアプリケーションでは、ユーザーに userId を持たせたいと思っています (私がスタック オーバーフローでここにいるのと同じように)。それが既に取得されている場合は、ユーザーが別のユーザーを選択できるようにエラーが発生するようにします。
ここに私の Signup オブジェクトが続きます。「mapping(」: "オブジェクト Forms のメソッド マッピングの引数がありません。部分的に適用された関数として扱いたい場合は、このメソッドの後に `_' を付けてください" という行でエラーが表示されます。
object Signup extends Controller {
val userForm: Form[UserProfile] = Form(
mapping(
"userId" -> nonEmptyText,
"passwordHash" -> nonEmptyText,
"email" -> email
) verifying (
"ThisIsATest", { case(userId, passwordHash, email) => true }
// "UserID already taken", { DBService.exists(UserProfile.getClass().getName(), userId) }
)(UserProfile.apply)(UserProfile.unapply))
def index = Action {
Ok(views.html.signup(userForm))
}
def register = Action { implicit request =>
userForm.bindFromRequest.fold(
errors => BadRequest(views.html.signup(errors)),
user => Redirect(routes.Profile.index))
}
}
ご覧のとおり、ルックアップ サービスを単純に true を返すテスト検証に置き換えて、例の複雑さを軽減しています。完全を期すために、これは私の UserDetail ケース クラスです。
case class UserProfile(
userId : String,
email: String,
passwordHash: String)
私は Scala 初心者で Play 初心者なので、これが非常に些細な質問でしたら申し訳ありません。しかし:
このエラーが発生したため、何が間違っていますか?
これは、独自の検証を追加する正しい方法ですか?
フォローアップの質問: うまくいけばリダイレクトしますが、確認したばかりのフォームを参照するページにリダイレクトするにはどうすればよいですか?
乾杯
ニック