2016-10-03 12 views
1

私はScala Play 2.5.xを使用していますが、日付の検証をいくつか行っています。ユーザーは、このフォームのアイテムと、日付範囲のオプション(fromDateおよびtoDate)を検索することができます。 Scala Playフォームの日付確認

val searchForm = Form(
mapping(
    "itemID" -> nonEmptyText, 
    "fromDate" -> optional(date), 
    "toDate" -> optional(date), 
    "type" -> optional(text), 
    "itemClass" -> optional(text), 
    "status" -> optional(text), 
    "component" -> nonEmptyText 
)(SearchModel.apply)(SearchModel.unapply) verifying("To Date must be greater than From Date", f => f.toDate > f.fromDate)) 

形式の検証

はすでにプレイで覆われているが、問題は toDateニーズが fromDateよりも大きくなるようにということで、日付のいずれかが入力された場合、他にも入力する必要があります。

これらの条件をフォームに実装するにはどうすればよいですか? viewcontrollerまたはcase classのような別の場所でこの検証を行うべきですか?

+0

あなたが任意の検証を実装することができ、コントローラでは、それは、要求/応答サイクルがかかります。この特定のケースでは、 "fromDate"フィールドに "toDate"フィールドを入力する必要がある場合は、単純なjavascript検証をビューに追加する必要があると思います。そうすれば、コントローラにそのチェックを実装する場合のように、ページをリロードする必要はありません。 –

答えて

1

あなたがニーズを検証実装するには、フォーム定義でそれを維持し、他のverifyingを追加することができます。

val searchForm = Form(
mapping(
    "itemID" -> nonEmptyText, 
    "fromDate" -> optional(date), 
    "toDate" -> optional(date), 
    "type" -> optional(text), 
    "itemClass" -> optional(text), 
    "status" -> optional(text), 
    "component" -> nonEmptyText 
)(SearchModel.apply)(SearchModel.unapply) 
    verifying("You must provide zero or both dates", f => f.toDate.isEmpty && f.fromDate.isEmpty || f.toDate.isDefined && f.fromDate.isDefined) 
    verifying("To Date must be greater than From Date", f => if (f.toDate.isDefined && f.fromDate.isDefined) f.toDate.get > f.fromDate.get else true) 
) 
1

あなたはrefrenceについては

val searchForm = Form(
    mapping(
    "itemID" -> nonEmptyText, 
    "fromDate" -> optional(date).verifying("Invalid Date", date => true /* any condition or a function which checks the date condition*/), 
    "toDate" -> optional(date), 
    "type" -> optional(text), 
    "itemClass" -> optional(text), 
    "status" -> optional(text), 
    "component" -> nonEmptyText 
    )(SearchModel.apply)(SearchModel.unapply) 

.verifying を使用してフォーム上の検証を追加することができます - https://www.playframework.com/documentation/2.5.x/ScalaForms#Defining-ad-hoc-constraints

私はそれはあなたが求めていることだ願っています。

関連する問題