【问题标题】:How can I Access Session data from one bundle to another如何从一个包访问会话数据到另一个包
【发布时间】:2013-09-17 02:33:52
【问题描述】:

我有两个包

  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 }}

用户实体

【问题讨论】:

  • 会话是在登录包中创建的,并且 session.name 在其树枝模板中工作正常。但是在 Main Bundle 的模板中使用时,它现在显示任何内容。
  • @Pazi 问题中添加的代码
  • 只创建一个 Session 对象,确实使它成为一个真正的 php 会话。 $user 来自哪里?
  • @Pazi Users 是创建的实体,这里 $user 正在从实体的数据库中获取用户详细信息。添加代码
  • @pazi 谢谢兄弟.. 帮了我.. 它工作得很好:)

标签: symfony symfony-2.1 symfony-forms


【解决方案1】:

首先您应该注意,创建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') %}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-29
    • 1970-01-01
    • 2013-11-06
    相关资源
    最近更新 更多