我在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
内指定的相同验证。
这可能吗?
答案 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"));
}
});