我有一個非常長的訂單形式,可以保存草稿。如果保存爲草稿,則僅需要訂單名稱,但實際下訂單時需要更徹底的驗證。我通過使用不同的驗證組來實現這一點。編輯訂單時,我會顯示兩個按鈕:「保存草稿」和「下訂單」。他們每個人都使用不同的驗證組進行驗證。如何在不綁定請求的情況下觸發表單驗證?
但是現在我想在訂單列表上做一個按鈕,可以將訂單狀態從「草稿」直接更改爲「放置」。爲此,必須執行驗證而不顯示編輯表單並提交。我只想驗證已經在數據庫中的實體。我可以使用驗證器服務,只要數據有效,一切都很簡單。但是,如果數據無效,我想將用戶重定向到編輯窗體,其中突出顯示丟失數據的字段。這個想法似乎是將數據從數據庫加載到表單中,並運行驗證,就好像數據是使用瀏覽器發送的一樣,但執行此操作似乎並不重要,因爲Symfony2僅在綁定請求時纔在表單上觸發驗證。
我正在瀏覽Symfony源代碼,發現名爲Symfony \ Component \ Form \ Extension \ Validator \ EventListener \ ValidationListener的類。它似乎附加在FormEvents :: POST_SUBMIT事件上。有沒有辦法在沒有請求綁定的情況下從控制器手動觸發此事件?或者有什麼替代方法來解決我的問題?
對不起。即使您明確聲明您不想綁定請求,但我的答案仍然需要您這樣做。但我沒有看到我的解決方案有任何問題。即使您未從編輯表單中調用,也可以綁定請求。 – pagliuca