我有一个非常简单的表单,使用createFormBuilder创建,只提供一个简单的文本字段(没有附加到表单的实体)。Symfony Form在提交后重置
当提交表单时,我会执行一些逻辑,然后取消设置表单和formData,如许多帖子中对此主题所建议的,如果您希望表单在提交后重置。
简单的ajax-requests还有一些额外的动作,主要启动一些UI的东西 - 不会触及表单本身,也不会重新加载页面。
一切正常,除非表格显然只是不想被重置 - 意思是:只要按下浏览器中的页面重新加载按钮,就会出现标准浏览器对话框,询问您是否要再次提交表单。当你提交最后一次渲染调用之前输入的最后一个值。
模板kw.html.twig是直截了当的 - 主要是一些UI的东西的形式呈现和jQuery的一点处理AJAX。没有什么特别的。
我不明白为什么发生这种情况 - 我只是想要一个干净的窗体上的任何请求。当我在下面的示例代码中设置不喜欢的东西时,我认为我会得到它。
/**
* @Route("/kw", name="show_kw")
*/
public function showKwAction(Request $request)
{
if($request->isXmlHttpRequest()) {
if($request->getMethod() == 'POST') {
// do some logic...
return $this->json(array('kw_success' => true));
}
}
$kwData = array();
$kwForm = $this->createFormBuilder($kwData)
->add('kd', TextType::class)
->getForm();
if($request->isMethod('POST')) {
$kwForm->handleRequest($request);
$formData = $kwForm->getData();
// do some logic with formData...
unset($kwData);
unset($kwForm);
$kwData = array();
$kwForm = $this->createFormBuilder($kwData)
->add('kd', TextType::class)
->getForm();
}
$templateData = array(
'kwForm' => $kwForm->createView()
);
return $this->render(':backend:kw.html.twig', $templateData);
}
任何帮助,高度赞赏。
编辑:使用Symfony的3.1
这不是服务器端问题。点击刷新时,浏览器会重复上次请求。尝试在地址栏中输入以使用GET请求来刷新它,它会工作。 – Alsatian