ここでフォームのソースコードをチェックして、それをよりよく理解することができます
Form
適用メソッドを定義します。
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))
それは、ドキュメントで述べられているように、フィールドが存在しない場合でも、任意のフィールドを返します。そして、aField
には:errors
を返すメンバーがあります。Seq[FormError]
だから、あなたはそのようなことをすることができます(のためにSeq[FormError]
):
eventForm("name").errors.foreach { error =>
<div>@error.message</div>
}
または(の場合Option[FormError]
)
eventForm("name").error.map { error =>
<div>@error.message</div>
}
または、次を使用できますForm
errors
:
def errors(key: String): Seq[FormError] = errors.filter(_.key == key)
そして、与えられたキーのすべてのエラーを取得します。このように(のためにSeq[FormError]
):
eventForm.errors("name").foreach { error =>
<div>@error.message</div>
}
または(の場合Option[FormError]
)
eventForm.error("name").map { error =>
<div>@error.message</div>
}
詳細が必要な場合は、ソースコードを確認してください。それはよく書かれていて、よくコメントされています。
乾杯!
編集:
biesiorがコメントしたように:さまざまな言語で人間が読めるきれいなメッセージを表示するには、ここでI18Nがどのように機能するかを確認する必要があります
徹底的に言うと、おそらくI18Nに対処する必要があります。すべてを機能させるのは難しいことではありません。ドキュメントを読んだ後でも、少し戸惑うかもしれません。少しプッシュします。messages
フォルダにファイルを追加すると、ここconf
からそのコンテンツをコピーできます。そうすれば、デフォルトのメッセージをより細かく制御できます。今、あなたの見解では、あなたはそのようなことをすることができるはずです:
eventForm.errors("name").foreach { error =>
<div>@Messages(error.message, error.args: _*)</div>
}
たとえば、ファイルで以前に定義されたメッセージが表示されるerror.message
場合などです。エラーメッセージが処理する可能性のあるいくつかの引数を定義します。たとえば、を処理している場合、anは必要な最小値である可能性があります。メッセージでは、パターンに従う必要があります。ここで、nは引数の順序です。error.invalid
conf/messages
Invalid value
args
error.min
arg
{n}
もちろん、次のような独自のメッセージを定義することができます。
error.futureBirthday=Are you sure you're born in the future? Oowww hay, we got ourselves a time traveler!
そして、コントローラーでは、そのようにフォームをチェックできます(1行のコードでその感覚を示すことができます)
"year" -> number.verifying("error.furtureBirthday", number <= 2012) // 2012 being the current year
言語をいじりたい場合は、ドキュメントに従ってください。
乾杯、また!