簡體   English   中英

驗證失敗后修改Symfony表單數據

[英]Modifying Symfony form data after failed validation

我有一個帶有自定義驗證程序的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錯誤You cannot change the data of a submitted form

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

有什么辦法嗎?

這樣怎么樣

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM