4

我有两个包

  1. 主要的
  2. 登录

我在一个包中创建会话,需要在另一个包中使用会话数据。

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

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

$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' %}

主要树枝 - layout.html.twig

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

用户实体

4

1 回答 1

3

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

所以在你的控制器中:

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

在 twig 中,会话可以通过app.session.

{% set sessionName = app.session.get('name') %}
于 2013-09-12T16:37:21.363 回答