劇中で!フレームワーク、scalaを使用して、次のようなフォームがあるとします:
import play.api.data._
import play.api.data.Forms._
import play.api.data.validation.Constraints._
case class User(someStringField: String, someIntField: Int)
val userForm = Form(
mapping(
"someStringField" -> text,
"someIntField" -> number verifying(x => SomeMethodThatReceivesAnIntAndReturnsABoolean(x))
)(User.apply)(User.unapply)
)
whereSomeMethodThatReceivesAnIntAndReturnsABoolean
は、int に対して何らかのロジックを実行して検証するメソッドです。
someStringField
ただし、を検証するときにの値を考慮できるようにしたいのsomeIntField
ですが、プレイ フレームワークのフォームでこれを達成する方法はありますか? 私は次のようなことができることを知っています:
val userForm = Form(
mapping(
"someStringField" -> text,
"someIntField" -> number
)(User.apply)(User.unapply)
.verifying(x => SomeFunctionThatReceivesAnUserAndReturnsABoolean(x))
そして、利用可能なユーザー インスタンス全体を検証関数に渡します。someIntField
このアプローチの問題は、結果として生じるエラーが、フィールドに関連付けられるのではなく、フォーム全体に関連付けられることです。
両方を取得し、別のフィールドを使用してフィールドを検証し、フォーム全体ではなく、検証したい特定のフィールドに関連付けられたエラーを維持する方法はありますか?