How to display global form errors on different inputs?
I have a registration form:
val loginForm = Form(tuple( "email" -> (nonEmptyText verifying email.constraints.head), "password" -> nonEmptyText ) .verifying("Email doesn't exist", params => User.findByEmail(params._1) != None) .verifying("Password incorrect", params => User.findByEmail(params._1).map(_.checkPassword(params._2)) == Some(true)) )
Note the two global validators in the latter. They should be executed only if the email
not empty and has a valid format, and the password
not empty, so I put it in the global one.
I want to display Email doesn't exist
next to the email
input and Password incorrect
next to the password
input, how to do this in the field of view?
I am currently using loginForm.globalError
, but it will show both of them next to the same input.
@inputText(loginForm("email"), '_label->"Email:", '_error->loginForm.globalError ) @inputPassword(loginForm("password"), '_label->"Password:")
IMHO, the global error should remain global, so I would put it above your inputs:
@loginForm.globalError.map { error => <div>@error</div> } @inputText(loginForm("email"), '_label->"Email:") @inputPassword(loginForm("password"), '_label->"Password:")
Otherwise, you will need to do something like this:
'_error -> loginForm.error("email").orElse(globalError)