php – 使用会话Symfony时保存元素
发布时间:2020-12-13 21:54:19 所属栏目:PHP教程 来源:网络整理
导读:我正在尝试使用与Symfony的会话.事实上,我想在登录前填写表格. 出于这个原因,我想要这个方案: 保存会话中的不同字段 登录/注册 保存在数据库中 我的控制器: public function customMadeAction(Request $request) { $session = $this-container-get('sessio
我正在尝试使用与Symfony的会话.事实上,我想在登录前填写表格.
出于这个原因,我想要这个方案: >保存会话中的不同字段 我的控制器: public function customMadeAction(Request $request) { $session = $this->container->get('session'); $user = $this->container->get('security.context')->getToken()->getUser(); $CustomMade = new CustomMade(); $form = $this->createForm(new CustomMadeType(),$CustomMade); $form->handleRequest($request); if ($user === 'anon.') { if($form->isValid()) { # 1-Save in session var_dump($CustomMade); #I have an array with all I need $session->set('infos',$CustomMade); #It does not save my informations # 2-Redirect to login/register $securityContext = $this->container->get('security.context'); if (!$securityContext->isGranted('ROLE_USER')) { throw new AccessDeniedException('Accès refusé'); } else { # 3-Save in database $em = $this->getDoctrine()->getManager(); $em->persist($CustomMade); $em->flush(); } } }else{ if($form->isValid()) { $CustomMade->setIdUser($user->getId()); $em = $this->getDoctrine()->getManager(); $em->persist($CustomMade); $em->flush(); } } return $this->render('FrontBundle:Forms:customMade.html.twig',array( 'form' => $form->createView() )); } 解决方法
如果要保存数据,只保存表单中的输入数据(验证后),而不是整个实体(可能有很多…狗屎,除非你想要的).
您可以将对象/数组设置为会话,Symfony将负责为您序列化和反序列化它 如果是这种情况,请更换 $session->set('infos',$CustomMade); 通过 $session->set('infos',$form->getData()); 这样你以后就会这样做: $data = $session->get('infos'); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |