Sie können ein besseres Verständnis davon bekommen Überprüfung Form's sourcecode here
Form
ein Verfahren anwenden definiert:
def apply(key: String): Field = Field(
this,
key,
constraints.get(key).getOrElse(Nil),
formats.get(key),
errors.collect { case e if e.key == key => e },
data.get(key))
Das ist, wie in der doc sagte, gibt ein beliebiges Feld, auch wenn es nicht vorhanden ist . Und ein Field
hat ein errors
Element, das gibt einen Seq[FormError]
:
Also, Sie so etwas tun könnte (für die Seq[FormError]
):
eventForm("name").errors.foreach { error =>
<div>@error.message</div>
}
oder (beim Option[FormError]
)
eventForm("name").error.map { error =>
<div>@error.message</div>
}
Oder Sie könnten Form
errors
:
verwenden 0
Und erhalten Sie alle Fehler eines bestimmten Schlüssels. Wie dies (für die Seq[FormError]
):
eventForm.errors("name").foreach { error =>
<div>@error.message</div>
}
Oder (für die Option[FormError]
)
eventForm.error("name").map { error =>
<div>@error.message</div>
}
Wenn Sie weitere Informationen wünschen, überprüfen Sie den Quellcode. Es ist gut geschrieben und gut kommentiert.
Prost!
EDIT:
Wie biesior kommentiert: Menschen lesbare ziemlich Nachrichten mit unterschiedlichen Sprachen zu zeigen, Sie überprüfen müssen, wie L18N Spiel funktioniert here aus
gründlich zu sein sind Sie wahrscheinlich zu haben gehen mit I18N umgehen. Es ist überhaupt nicht schwer, alles zum Laufen zu bringen. Nach dem Lesen der documentation können Sie immer noch ein wenig Consufed finden. Ich gebe dir einen kleinen Stoß.Fügen Sie Ihrem Ordner conf
eine messages
-Datei hinzu, und Sie können seinen Inhalt von here kopieren. Auf diese Weise haben Sie mehr Kontrolle über die Standardnachrichten. Nun, aus Ihrer Sicht, sollten Sie in der Lage sein, so etwas zu tun:
eventForm.errors("name").foreach { error =>
<div>@Messages(error.message, error.args: _*)</div>
}
Zum Beispiel, wenn error.message
waren error.invalid
würde es zeigt die Nachricht zuvor definiert in der conf/messages
Datei Invalid value
. args
Definieren Sie einige Argumente, mit denen Ihre Fehlermeldung umgehen kann. Wenn Sie z. B. mit error.min
arbeiten, kann ein arg
der Mindestwert sein. In Ihrer Nachricht müssen Sie nur dem {n}
Muster folgen, wobei n die Reihenfolge Ihres Arguments ist.
Natürlich sind Sie in der Lage Ihre eigenen Nachrichten so zu definieren:
error.futureBirthday=Are you sure you're born in the future? Oowww hay, we got ourselves a time traveler!
Und in Ihrem Controller können Sie Ihre Form überprüfen wie die (nur eine Zeile Code Sie das Gefühl, es zu zeigen)
"year" -> number.verifying("error.furtureBirthday", number <= 2012) // 2012 being the current year
Wenn Sie mit Sprachen herumspielen möchten, folgen Sie einfach der Dokumentation.
Prost, wieder!
Gerade Spitze, natürlich für den Menschen lesbaren Nachricht angezeigt sollte es als ''
Yeap verwendet werden, L18N ist eine andere Geschichte – wleao
So scala Ich denke, ich muss wirklich lernen Spiel zu verwenden. wleao, deine Beispiele haben funktioniert. Ich musste @Messages (error.message) verwenden, um eine menschlich lesbare Nachricht zu erhalten, wie Biesior sagte. – Brian