Symfony如何在登录后有效表单



我有一个创建表单

的新手
   /**
     * Creates a new Vente entity.
     *
     * @Route("/new", name="vente_new")
     * @Method({"GET"})
     */
    public function newAction(Request $request) {
        $vente = new Vente();
        $form = $this->createForm('AppBundleFormVenteType', $vente);
        return $this->render('vente/new.html.twig', array(
                    'vente' => $vente,
                    'form' => $form->createView(),
        ));
    }

成功登录后处理和阀形的加法表:

/**
 * Creates a new Vente entity.
 *
 * @Route("/add", name="vente_new_add")
 * @Security("has_role('ROLE_USER')")
 * @Method({"POST"})
 */
public function addAction(Request $request) {
    //...
    $user = $this->getUser();
    //...
}

登录后,如何获取形式数据并处理它?如果用户未登录并在成功登录后处理storig storig session中的表单数据。但是我不知道该如何处理。

请有任何帮助吗?

您应该在同一控制器操作中具有表单显示和处理,这样就可以简单得多。我了解,在您的情况下,您想在处理表单之前记录用户,以便您必须有两个操作。除非您选择将表格放在同一防火墙和访问控制下。如果您必须是一名经过身份验证的用户,以查看和处理表单,则可以合并这两个步骤。

否则,您可以序列化请求对象或尝试用请求进行补充并序列化表单对象。然后,您可以将此序列化对象存储在会话中,并取消序列化。看看JMS Serializer Bundle,它简单且非常有效。

在这种情况下,我通常使用以下解决方案之一:

  • 制作弹出窗口中打开的AJAX登录表格,在提交表单之前将其打开,请确保仅在用户已登录时执行提交。
  • 将表单信息保存在数据库中,带有其他数据,但具有特殊状态,或在单独的表中,然后仅需要将ID存储在会话内,并在提交后链接到已登录的用户。

最新更新