首页 > 解决方案 > 提交后删除 symfony 表单域

问题描述

我有一个表单,我想根据验证期间发生的错误对其进行编辑,但是当我尝试删除一个字段时,我得到了异常“AlreadySubmittedException”。

提交后如何从我的表单中删除字段?

$form = $this->createForm(MyForm::class);
$removeTheField=true;

if ($request->getMethod() == 'POST') {
    $form->handleRequest($request);

    if ($form->isValid()) {
        // Send form data to an API and get api errors
        // if api responds with some error
            $removeTheField = false;
        // endif
    }
}

if(removeTheField)) {
    $form->remove('my_field'); // throw AlreadySubmittedException
}

我正在考虑但我不太喜欢的一种解决方案是使用前一个的数据和更少的字段重新创建表单。

标签: phpformssymfony

解决方案


我认为这不是正确的方法。因此,如果您知道您有另一个验证,那么您应该为该字段实现您自己的验证,您可以使用正确的值并对其进行验证。

https://symfony.com/doc/current/validation/custom_constraint.html

如果您不需要该字段,则应删除它们或禁用该字段的验证。


推荐阅读