如何从一个包到另一个包访问会话数据

时间:2013-09-12 15:45:12

标签: symfony symfony-2.1 symfony-forms

我有两个捆绑

  1. 主要
  2. 登录
  3. 我在一个包中创建会话,需要在另一个包中使用会话数据。

      

    我们如何在创建的不同包中访问相同的会话数据   在一个单一的包中。

    登录捆绑控制器 - 创建会话:

    $session = new Session();
    $session->set('name', $user->getFname()." ".$user->getLname());
    $session->set('uname', $user->getUsername());
    $session->set('pwd', $user->getPassword());
    

    登录 - 用户名和密码检查

         if ($request->getMethod() == 'POST') {
                $uname = $request->request->get('uname');
                $pwd = $request->request->get('pwd');
    
                $em = $this->getDoctrine()->getEntityManager();
                $repository = $em->getRepository('SimranMainBundle:Users');
    
                $user = $repository->findOneBy(array('username'=>$uname, 'password'=>$pwd));
                if($user){
                    $session = new Session();
                    $session->set('name', $user->getFname()." ".$user->getLname());
                    $session->set('uname', $user->getUsername());
                    $session->set('pwd', $user->getPassword());
                    return $this->render('SimranLoginBundle:Default:index.html.twig', array('name' => $user->getFname()." ".$user->getLname(),'uname'=>$uname, 'pwd'=>$pwd));
                }
                else{
                    return $this->render('SimranLoginBundle:Default:index.html.twig', array('name' => "LOGIN"));
                }
            }
    

    登录Twig - index.html.twig

    {% extends 'SimranMainBundle::layout.html.twig' %}
    

    Main Twig - layout.html.twig

    {% set sessionName = session.name %}
    {{ sessionName }}
    

    用户实体

1 个答案:

答案 0 :(得分:3)

首先你要注意,创建Session实例意味着不创建真正的php会话。在获取请求期间已经创建了php会话,您必须使用此对象。

所以在你的控制器中:

$session = $request->getSession();
$session->set('name', $user->getFname()." ".$user->getLname());
$session->set('uname', $user->getUsername());
$session->set('pwd', $user->getPassword());

在小枝中,会话可通过app.session访问。

{% set sessionName = app.session.get('name') %}