私はプレイとスカラが初めてです。私はフォームと検証に取り組んでいます。しかし、フォームの複数の検証からすべてのエラーを取得することはできませんでした。
私のフォームタプルは次のようになります。
val companyMapping = Forms.tuple(
"name" -> nonEmptyText,
"email" -> email,
"password" -> nonEmptyText(8),
"re-password" ->nonEmptyText(8)).verifying(
// Add an additional constraint: both passwords must match
"Passwords don't match", data => {
data._3 == data._4 }
).verifying(
// Second constraint
"Test error", data => {
false }
)
グローバルエラーとエラーを出力するビューでは、次のようになります。
@println(companyForm.globalError)
@println(companyForm.errors)
そして出力;
Some(FormError(,Passwords don't match,WrappedArray()))
List(FormError(,Passwords don't match,WrappedArray()), FormError(,Test error,WrappedArray()))
この段階では、両方のエラーを出力する方法がまったくわかりません。入力ごとに個別にエラーを表示し、最後にグローバル エラーを表示します。しかし、パスワードが一致すると、グローバル エラーにテスト制約が表示されます。それ以外は、パスワード一致の制約のみを示しています。
これがビュー部分です。
@helper.form(action = routes.Login.register) {
<div class="row">
<span class="label">Name</span>
<input type="text" name="name" placeholder="Company Name" value="@companyForm("name").value" >
@if(!companyForm.errors("name").isEmpty){
<span class="error">@Messages(companyForm.errors("name")(0).message,"Company name")</span>
}
</div>
<div class="row">
<span class="label">Email</span>
<input type="text" name="email" placeholder="Email" value="@companyForm("email").value" >
@if(!companyForm.errors("email").isEmpty){
<span class="error">@Messages(companyForm.errors("email")(0).message,companyForm.errors("email")(0).key)</span>
}
</div>
<div class="row">
<span class="label">Password</span>
<input type="password" name="password" placeholder="Password" value="@companyForm("password").value" >
@if(!companyForm.errors("password").isEmpty){
<span class="error">@Messages(companyForm.errors("password")(0).message,8)</span>
}
</div>
<div class="row">
<span class="label">Re-type Password</span>
<input type="password" name="re-password" placeholder="Re-type your password" value="@companyForm("re-password").value" >
@if(!companyForm.errors("re-password").isEmpty){
<span class="error">@Messages(companyForm.errors("re-password")(0).message,8)</span>
}
</div>
@println(companyForm.globalError)
@println(companyForm.errors)
<div class="row">
<span class="label"><button type="submit">Save</button></span>
@companyForm.globalError.map { error =>
<span class="error">@error.message</span>
}
</div>
}
たぶん、これらのエラーの種類について混乱しているだけです。なので詳しく教えてください。