2010-06-02 78 views
2

我一直在搜索網絡,但我什麼都沒發現!Symfony:在驗證之前/之後對提交的值進行預過濾

我使用symfonys表單框架來構建一個簡單的「創建」窗體。驗證沒問題。不過,我想預先過濾我提交的值,所以添加ucfirst,strtoupper等。

我不知道是否在這裏丟失了一些至關重要的東西,但我看到它的唯一方法就是創建我自己的自定義驗證器並使用doClean方法,這看起來很愚蠢,因爲我會每個php函數都有數百個驗證器!

希望你們可以幫忙,我一直在通過源代碼,api,許多書籍和博客爬行,我還沒有找到一件東西:(或者它是不可能的,或者它很容易,我希望它後者!

回答

1

我的可能不回答問題道歉,但你能澄清爲什麼值需要有約束力和驗證之前改變了嗎?這似乎喜歡的事,可以做作爲sfFormDoctrine::processValues部分或sfFormDoctrine::updateXXXXColumn回調。如果你'使用Propel,應該有類似的方法,

+0

感謝jeremy的回覆,現在沒關係,我想我已經得到了它,我打算在後面發佈一個答案給我的問題,但本質上它的w你所描述的帽子。我所做的只是在我的表單類中擴展了教義模型表單類,方法bind(),它在驗證發生之前執行了這種方式:)或者,正如您正確地說的那樣,您可以對各個列使用updateXXXColumn – studioromeo 2010-06-07 11:34:49

+0

雖然您可以覆蓋綁定後,值應該綁定後更新,而不是之前,除非有充分的理由否則。 – 2010-06-07 12:18:59

+0

在kohana中,你可以在表單數據上設置預過濾器,我經常用它來在所有或某些字段上應用trim()和ucfirst()或strtoupper()之類的東西。在某些情況下,我想在驗證之前預先格式化數據。 – studioromeo 2010-06-12 18:58:49