表单事件监听器中的Symfony2验证值?

时间:2015-04-02 20:05:03

标签: forms validation symfony

我在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内指定的相同验证。

这可能吗?

2 个答案:

答案 0 :(得分:6)

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

如果在验证步骤发生后调用了事件监听器,那么这应该是可靠的。

请注意,验证步骤可以在表单订阅者本身中找到,并且正在侦听POST_SUBMIT - 您尝试附加到的同一事件。

供参考,请检查Symfony\Component\Form\Extension\Validator\EventListener\ValidationListener

答案 1 :(得分:1)

在symfony 4中,我这样做是为了验证基于另一个表单元素的表单输入:

    ->addEventListener(FormEvents::POST_SUBMIT, function (FormEvent $event) {
                   $cardData=$event->getData();
                   $form=$event->getForm();

                    if(Your Valdiation Condition){

                        }
                        else{
                      $form->addError(new FormError("form error message"));
                        }
  });