PlayFrameworkにはデフォルトでValidationの制約が用意されています。
play.api.data.validation.Constraints
がそれに当たります。
しかし、上記に定義されていない制約を用いてValidationを行いたい場合は自身で作成する必要があります。
Play公式に作成方法が書いてあります。
【Play公式】独自Validationの作り方
ポイントはValid
, InValid
の使い方で
Valid
ならOK
InValid
ならNGになります。
また、InValidの場合は使用するエラーメッセージを指定してください。
下のコードが独自Validationのコードになります。
Constraint
型を使用して、電話番号に対して制約を定義しています。
CustomValidation.scala
val TelRegex = """^\d{10}$|^\d{11}$""".r
val telConstraint: Constraint[String] = Constraint("constraint.tel") { tel =>
if (tel == null) Valid
else if (tel.trim.isEmpty) Valid
else {
val matchResult = TelRegex.findFirstMatchIn(tel.replace("-", ""))
matchResult match {
case None => Invalid(ValidationError("error.tel.parttern"))
case Some(result) => Valid
}
}
}
使い方はPlayで用意されているのと同じで、verifying
メソッドの引数に作成した制約を与えてください。