我有一个创建表单
的新手 /**
* 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存储在会话内,并在提交后链接到已登录的用户。