Symfony2表单 - "您无法更改提交表单的数据。"

时间:2016-02-18 09:49:49

标签: php jquery forms symfony

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

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

检查失败:用户应该再次看到该表单,但必须将隐藏字段paymentMethod设置为null,以便再次显示收款的选择框。

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

2 个答案:

答案 0 :(得分:4)

在已经“提交”的表单上调用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
}

答案 1 :(得分:0)

解决方案非常简单:

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

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