2015-04-02 34 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