我有一个表单,用户可以在其中选择首选付款方式。所选付款方式的名称将写入隐藏字段" paymentMethod"。提交表格后,系统会检查客户是否有付款(付款合作伙伴的API)。
检查确定:应将用户重定向到确认页面(没问题)
检查失败:用户应该再次看到该表单,但必须将隐藏字段paymentMethod设置为null,以便再次显示收款的选择框。
问题:您无法更改已提交表单的数据。
答案 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;
}