2014-02-19 79 views
1

我的Symfony2(2.4.2)應用程序有一個表單和一個實體,我在某些字段上設置了一些驗證約束條件。實體變量之一是一個不應該爲空的數組。約束驗證器驗證實體在Symfony 2中準備就緒之前的實體

表單有一個字段,它沒有直接映射到實體。輸入是逗號分隔的字符串;這個字符串將preg_split放入一個數組並保存到前面提到的實例變量中。該操作由FormEvents::POST_SUBMIT觸發。

但是,當我提交表單時,即使輸入字符串不是空的,表單顯示驗證失敗。我做了一些調試,發現驗證實際發生在FormEvents::POST_SUBMIT之前。我嘗試過其他FormEvents,但沒有運氣。

有沒有辦法在驗證之前觸發事件?

注意:上面的場景縮短了,如果上下文是我真正的應用程序,問我一個問題太長了。

+0

你爲什麼不以'FormEvents爲此:: PRE_SUBMIT'? – JamesHalsall

+0

爲什麼表單字段沒有映射到實體?它是驗證錯誤,因爲該字段在當時爲空或者因爲它不像POST_SUBMIT之後的數組?既然它不是空的,也許你應該改變驗證的格式,看起來像分裂事件之前。 – SenseException

+2

使用DataTransformers進行這種操作。不是形式事件。 – Cerad

回答