Php Symfony2表格-“;您不能更改已提交表单的数据。”;

Php Symfony2表格-“;您不能更改已提交表单的数据。”;,php,jquery,forms,symfony,Php,Jquery,Forms,Symfony,我有一个表单,用户在其中选择首选的付款方式。所选付款方式的名称写在隐藏字段“paymentMethod”中。提交表单后,系统将检查客户是否可以获得付款(支付合作伙伴的API) 检查确定:应将用户重定向到确认页面(无问题) 检查失败:用户应再次查看表单,但隐藏字段paymentMethod必须设置为null,以便Payments的选择框再次可见 问题:无法更改已提交表单的数据。对已“提交”的表单调用setData()时,会发生此错误 在这种情况下,要将paymentMethod设置为null,请在

我有一个表单,用户在其中选择首选的付款方式。所选付款方式的名称写在隐藏字段“paymentMethod”中。提交表单后,系统将检查客户是否可以获得付款(支付合作伙伴的API)

检查确定:应将用户重定向到确认页面(无问题)

检查失败:用户应再次查看表单,但隐藏字段paymentMethod必须设置为null,以便Payments的选择框再次可见


问题:无法更改已提交表单的数据。

对已“提交”的表单调用setData()时,会发生此错误

在这种情况下,要将paymentMethod设置为null,请在
FormType
类中添加一个函数:

/** 
 * this gets called in the final stage before rendering the form
 *
 * @return void
 */   
public function finishView(FormView $view, FormInterface $form, array $options)
{
    // set paymentMethod here
}

在已“提交”的表单上调用setData()时会发生此错误

在这种情况下,要将paymentMethod设置为null,请在
FormType
类中添加一个函数:

/** 
 * this gets called in the final stage before rendering the form
 *
 * @return void
 */   
public function finishView(FormView $view, FormInterface $form, array $options)
{
    // set paymentMethod here
}

解决方案非常简单:

我在FormModel中添加了一个函数:

  public function resetPaymentMethod() {
    $this->paymentMethod = null;
  }

解决方案非常简单:

我在FormModel中添加了一个函数:

  public function resetPaymentMethod() {
    $this->paymentMethod = null;
  }

当您试图修改从请求(isSubmitted)加载的表单中的数据时,通常会发生这种情况。请看一看,当您试图修改从请求加载的表单中的数据(Isubmited)时,通常会发生这种情况。看一看,但我不想在呈现它之前将paymentMethod设置为null。只有当所选的付款方式对客户不可用时,它才应该为null。但是我不想在呈现之前将paymentMethod设置为null。仅当客户无法使用所选的付款方式时,该值才应为空。是否需要详细说明?是否需要详细说明?