Symfony 3 - 提交和验证后修改表单值

问题描述 投票:0回答:1

在我的申请中,我需要修改已提交的和经过验证的表单值。

该用例是一个带有地址的表单,该地址已由外部 Web 服务验证并可能更正。我需要在更正后更新表单中的地址,并在新呈现的表单中通知用户这一点。纠正后用户不应收到验证错误。 Symfony 的表单组件不允许修改已提交的表单值并抛出

AlreadySubmittedException

异常。

一种解决方案是将正确的地址传递给模板并向其添加逻辑。但在我看来,这是错误的方式。

还有其他解决办法吗?

php symfony symfony-forms
1个回答
1
投票

正确的方法是向表单添加事件侦听器并验证/更正其中的值。

use Symfony\Component\Form\FormEvent; use Symfony\Component\Form\FormEvents; class FooType extends AbstractType { public function buildForm(FormBuilderInterface $builder, array $options) { $builder->add('address'); $builder->addEventListener(FormEvents::POST_SUBMIT, function (FormEvent $event) { $data = $event->getData(); // do webservice validation here and $data = []; // set new data $event->setData($data); }); } }

文档

了解更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.