Как я могу объединить 2 валидатора вместе в play2? - PullRequest
1 голос
/ 16 марта 2012

Например, я хочу, чтобы входные данные были nonEmptyText и email.

Если пользователь ничего не вводит, будет отображаться сообщение об ошибке The field is required, если пользователь вводит неверный адрес электронной почты, будет отображаться Invalid email.

Но я нашел, я могу просто использовать один:

val loginForm = Form("email"->nonEmptyText)

или

val loginForm = Form("email"->email)

Для более поздней версии, если пользователь не вводит, он все равно покажет Invalid email, что не то, что я хочу.

Update1

Я пытался ответ Жюльена :

val loginForm = Form("email" -> (email verifying nonEmpty))

Когда пользователь ничего не вводит, сообщение об ошибке будет:

Valid email required, This field is required

Похоже, игра объединяет два сообщения об ошибках email и nonEmpty, но это не совсем то, что я хочу. Я надеюсь, что когда пользователь не вводит, сообщение только:

This field is required

Не

Valid email required, This field is required

UPDATE2

Я нашел причину, по которой он отображает комбинированные ошибки, в helper.twitterBootstrapFieldConstructor.scala.html, там есть:

<span class="help-inline">@elements.errors(elements.lang).mkString(",")</span>

Объединяет все ошибки с ,.

Для моего случая это должно быть:

<span class="help-inline">@elements.errors(elements.lang).lastOption</span>

Здесь lastOption для nonEmpty.

Но я думаю headOption лучше, но:

val loginForm = Form("email" -> (nonEmptyText verifying email))

Не работает - нет ограничения email, поэтому мы должны определить его для себя?

1 Ответ

2 голосов
/ 16 марта 2012

Согласно документации Form , вы можете добавить ограничения в отображение, используя метод verifying.В объекте Constraints уже определено несколько ограничений.Таким образом, вы можете написать:

val loginForm = Form("email" -> (email verifying nonEmpty))
...