1
我有下列輸入 「基團」:播放框架2字段分組
- 文本輸入1
- 文本輸入2
文本輸入1總是需要複選框。文本輸入2僅在複選框被選中時才需要。我怎樣才能在遊戲中實現這種類型的驗證?目前,我有這樣的事情:
val myForm: Form[MyData] = Form(
mapping(
"text1" -> text.verifying("Text1 is required", !_isEmpty),
"text2" -> text.verifying("Text2 is required", !_isEmpty),
"check" -> boolean
)
但顯然,這不是我想要的,因爲它會總是需要文本2。有沒有一種方法來實現這個相互依賴的驗證?基於麥片建議
更新: 該解決方案的工作,但是它有一些怪癖,我需要克服:
- 的臨時驗證不會發生,直到所有的其他制約表格通過。如果其他約束失敗,臨時驗證甚至不會執行。我需要他們全部一起執行,以便我可以在窗體上顯示所有錯誤消息。
- 在此特別驗證期間獲取的錯誤不適用於特定的表單輸入,例如,文本2。在我的模板中,我需要在text2上顯示一條錯誤消息,說「(因爲您選中了複選框,您需要填寫此輸入」)。相反,錯誤只是一般的「表單級」錯誤。你可以想象我會有這種驗證類型的多個實例,所以我可以假設這個錯誤適用於text2。
我看着遊戲支持的自定義驗證器,但我看不到我如何使用它們在多個字段上操作。 The example they show僅適用於正在驗證的表單字段,並沒有明顯的方式引用表單中的其他輸入。
這一般起作用,但有幾個問題:臨時驗證只發生在_所有其他非臨時驗證通過(所以我不會知道錯誤,除非一切正常)。此外,該驗證不「適用於」特定領域,例如text2 - >換句話說,我希望能夠在text2旁邊的窗體上顯示一個錯誤,但是這個錯誤似乎是一個表單級錯誤,而不是字段級。我懷疑也許一個自定義驗證程序可以提供幫助,但我不明白我可以如何使用它們跨多個字段進行驗證(自定義驗證程序似乎只能在單個字段上運行)。 – oym
@oym你可以將'validate'方法移動到'MyData'類本身,然後調用該謂詞表達式作爲驗證器(如果有驗證程序接受任意謂詞)。 – wheaties
你會介意擴展一下,也許舉個例子?我不知道該如何開始:我該如何使用這種驗證方法等。謝謝 – oym