加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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');

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读