douchou8935 2017-11-13 10:14
浏览 77

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

In my application I have the requirement to modify a submitted and validated form value.

The use case is a form with an address that is validated and possibly corrected by an external web service. I need to update the address in the form after the correction and inform the user about that in there newly rendered form. The user should not get a validation error after correction.

Symfony's form component does not allow to modify an already submitted form value and throws an AlreadySubmittedException exception.

One solution is to pass the corrected address to the template and add logic to it. But this is the wrong way in my opinion.

Is there another solution?

Thanks in advance, Jens

  • 写回答

1条回答 默认 最新

  • doulanyan6455 2017-11-13 10:37
    关注

    Yes you're correct, passing the corrected value to the template is not the right way.

    The correct way is to add an event listener to your form and validate/correct the value there.

    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);
            });
        }
    }
    

    The docs for more information.

    评论

报告相同问题?

悬赏问题

  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值