📅  最后修改于: 2023-12-03 14:47:49.085000             🧑  作者: Mango
在使用 Symfony 表单时,有时候我们需要在表单提交后刷新页面,但是保留用户填写的表单数据,以便用户对表单进行修改和重新提交。本文将介绍如何在 Symfony 应用程序中实现表单刷新提交。
要实现表单刷新提交,我们可以在表单数据提交后将表单数据存储在 Session 中,并将用户重定向回表单页面。当用户返回表单页面时,我们可以从 Session 中获取已提交的表单数据,并将其用于填充表单。这可以通过以下步骤实现:
public function handleRequest(Request $request, $data)
{
// 处理表单数据并验证表单
// ...
// 如果表单有效,则将表单数据存储在 Session 中
if ($form->isSubmitted() && $form->isValid()) {
$session = $request->getSession();
$session->set('form_data', $data);
}
// 将用户重定向回表单页面
return $this->redirectToRoute('form_page');
}
public function showFormPage(Request $request)
{
$session = $request->getSession();
$formData = $session->get('form_data', []);
// 创建表单并将存储在 Session 中的表单数据用于填充表单
$form = $this->createForm(MyFormType::class, $formData);
// 渲染表单页面
return $this->render('form_page.html.twig', [
'form' => $form->createView(),
]);
}
public function handleRequest(Request $request, $data)
{
// 处理表单数据并验证表单
// ...
// 如果表单有效,则将表单数据存储在 Session 中
if ($form->isSubmitted() && $form->isValid()) {
$session = $request->getSession();
$session->set('form_data', $data);
// 清除存储在 Session 中的表单数据
$session->remove('form_data');
}
// 将用户重定向回表单页面
return $this->redirectToRoute('form_page');
}
通过将表单数据存储在 Session 中,并在表单页面中使用存储的数据填充表单,我们可以实现 Symfony 应用程序中的表单刷新提交。这将使用户能够更轻松地对表单进行修改和重新提交,从而提高用户体验。