2015-04-02 33 views
4

我的代碼在Symfony2的形式,下面的代碼片段:表單事件偵聽器中的Symfony2驗證值?

$builder->add('AccountID'); 

$builder->get('AccountID')->addEventListener(
    FormEvents::POST_SUBMIT, 
    function (FormEvent $Event) { 
     //Do something but only if AccountID passed validation 
    } 
); 

眼下POST_SUBMIT被觸發它是否通過驗證或沒有。

如何判斷該字段是否在事件偵聽器內正確驗證?

我寧願沒有if來檢查我在場上validation.yml中指定的相同驗證。

這可能嗎?

回答

5

如何使用$event->getForm()->isValid()

如果您的事件偵聽器在驗證步驟發生後被調用,這應該是可靠的。

請注意,驗證步驟將在表單訂閱者本身內部找到,並且正在偵聽POST_SUBMIT - 您正試圖附加到的相同事件。

僅供參考,請檢查Symfony\Component\Form\Extension\Validator\EventListener\ValidationListener

+0

這看起來就是這樣。當我能夠時,去檢查一下!謝謝 – Tek 2015-04-06 23:54:05

+0

哎呀,看起來像我過早地授予了賞金。我認爲這工作,直到我輸入一個無效的值到表單中。 Symfony2錯誤顯示指示無效的值,但是當它不應該時,$ event-> getForm() - > isValid()返回'true'。 – Tek 2015-04-08 13:32:36

+0

明白了,看起來像'$ event-> getForm() - > isValid()'只適用於整個表單上的監聽器,而不是單獨的方法。例如,'isValid()'在$ builder-> addEventListener()內部工作,但不是在$ builder-> get('AccountID') - > addEventListener()' – Tek 2015-04-08 13:42:14