簡體   English   中英

使用其他數據庫基於另一個字段驗證字段

[英]Validate field based on another field using additional database

我有一個簡單的表單,其中包含兩個字段,第一個字段只是一個選擇,第二個字段包含一個值,需要在第一個字段的幫助下進行檢查。

我發現基於兩個字段的類似問題Symfony2表單驗證,並嘗試使用回調驗證器。
我已經閱讀了文檔 ,但是無法弄清楚如何使用它來訪問數據庫。

似乎唯一的方法是靜態調用驗證方法,但是在這種情況下,我松開了控制器的上下文。 我需要它來訪問例如數據庫。
在這種關系中,我正在使用Silex,並希望訪問它提供的服務。

表單沒有映射到任何類,因此創建自己的約束對我來說似乎是錯誤的,因為我看不到將其他字段傳遞給驗證器的任何方法。

有什么辦法可以實現?

還是我需要另一種方法?

我強烈建議您將表單映射到類並創建自定義約束。

我已經寫了一個有關如何執行以下操作的詳細示例:

  • 創建自己的驗證約束
  • 把它變成服務
  • 注入對象管理器
  • 從約束訪問數據庫

TLDR:

您需要的是類級別的自定義驗證器。

需要一個類級別的驗證器,因為如果要驗證多個相關值,則需要訪問整個對象(不僅是單個屬性)。

...或者需要使用另一個屬性作為選擇條件從數據庫中獲取某些內容。

這是帶有example的完整答案


另一種選擇是創建一個窗體事件偵聽器,然后將對象管理器傳遞給它,然后再將其添加到窗體中。

然后自己處理偵聽器中的驗證過程(針對數據庫檢查數據+最終向表單添加錯誤)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM