验证失败后修改Symfony表单数据

时间:2018-02-07 18:16:49

标签: php forms symfony

我有一个带有自定义验证器的Symfony表单字段。如果用户提交表单并且验证失败,我想更正该值并将其显示给用户进行审核。

如何在验证后修改提交的表单字段

PRE_SUBMIT不合适,因为它在验证之前执行:

$builder->addEventListener(FormEvents::PRE_SUBMIT, function (FormEvent $event) use ($options) {
    $data = $event->getData();
    $data['myField'] = 'Modified!';

    $event->setData($data);
});

我也尝试在控制器中进行修改,但是出现You cannot change the data of a submitted form错误。

if ($form->isSubmitted() && !$form->isValid()) {
    $form->get('myField')->setData('Modified!');
}

有没有办法做到这一点?

1 个答案:

答案 0 :(得分:0)

这是怎么回事?

$myValue = '';
if ($form->isSubmitted() && !$form->isValid()) {
    $myValue = 'Modified!';
}
return $this->render('my_template.html.twig', [
    'form' => $form->createView(),
    'myValue' => $myValue,
]);

my_template.html.twig

{{ form_widget(form.myField, {'value' : myValue}) }}