📜  symfony 表单刷新提交 - PHP (1)

📅  最后修改于: 2023-12-03 14:47:49.085000             🧑  作者: Mango

Symfony 表单刷新提交 - PHP

在使用 Symfony 表单时,有时候我们需要在表单提交后刷新页面,但是保留用户填写的表单数据,以便用户对表单进行修改和重新提交。本文将介绍如何在 Symfony 应用程序中实现表单刷新提交。

解决方案

要实现表单刷新提交,我们可以在表单数据提交后将表单数据存储在 Session 中,并将用户重定向回表单页面。当用户返回表单页面时,我们可以从 Session 中获取已提交的表单数据,并将其用于填充表单。这可以通过以下步骤实现:

  1. 在表单处理器中将表单数据存储在 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');
}
  1. 在表单页面中获取存储在 Session 中的表单数据,并将其用于填充表单。
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(),
    ]);
}
  1. 在表单处理器中清除存储在 Session 中的表单数据。
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 应用程序中的表单刷新提交。这将使用户能够更轻松地对表单进行修改和重新提交,从而提高用户体验。