Forms 表单事件侦听器中的Symfony2验证值?
我有以下Symfony2格式的代码片段:Forms 表单事件侦听器中的Symfony2验证值?,forms,validation,symfony,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 } ); 现在无论是否通过验
$builder->add('AccountID');
$builder->get('AccountID')->addEventListener(
FormEvents::POST_SUBMIT,
function (FormEvent $Event) {
//Do something but only if AccountID passed validation
}
);
现在无论是否通过验证,都会触发POST\u SUBMIT
如何判断该字段是否在事件侦听器中正确验证
我不希望使用if
来检查我在字段validation.yml
中指定的相同验证
这可能吗?使用
$event->getForm()->isValid()如何
如果您的事件侦听器在验证步骤发生后被调用,那么这应该是可靠的
请注意,验证步骤可以在表单订阅服务器本身中找到,并且正在侦听您试图附加到的相同事件
如需参考,请在Symfony 4中选中Symfony\Component\Form\Extension\Validator\EventListener\ValidationListener
,我这样做是为了验证基于另一个表单元素的表单输入:
->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"));
}
});
看起来就是这样。等我有空的时候再去看看!谢谢你哇,看来我提前给了悬赏。我认为这是有效的,直到我在表单中输入了一个无效值。Symfony2错误显示,指示一个无效值,但是$event->getForm()->isValid()
在不应该返回的时候返回true
。得到它,看起来$event->getForm()->isValid()
只对整个表单的侦听器有效,而不是对单个方法有效。因此,例如isValid()
在$builder->addEventListener()
内部工作,但不是$builder->get('AccountID')->addEventListener()
,尽管这是正确的答案,但您无法在整个表单上添加带有侦听器的字段。您将获得异常,无法将子项添加到提交的表单中。所以做一个子表单监听器是最好的选择,现在我只需要弄清楚怎么做。你弄明白了吗?StackOverflow已经一个多星期没有打开了。