如何在symfony2中的应用程序中的任何位置存储会话并访问它?

时间:2015-08-21 06:06:07

标签: php symfony session

代码如下。我有一个loginAction方法,我想通过我的twig文件中的会话访问用户名。

public function loginAction(Request $request)
{
    $session= $this->getRequest()->getSession();

    if($request->getMethod()=='POST')
    {

        $username=$request->get('username');
        $password=$request->get('password');

        $em= $this->getDoctrine()->getEntityManager();
        $repository = $em->getRepository('MWANRegisterBundle:User');

        $user= $repository->findOneBy(array('userName'=>$username,    'userPassword'=> $password ));
        if($user)
        {
        $login= new Session(); 

     // Session is in the same class as getter setter functions
     // for username and password

        $login->setUsername($username);
        $session->set('login', $login);
          if($session->has('login'))
            {
            $login = $session->get('login');
            $username = $login->getUsername();
            //  var_dump($username); exit();

       // in show_home I redirect to twig file list.html.twig

            return $this->redirect($this->generateUrl('show_home'));
            }

        }
        else
        {
        echo("wrong username   OR  password");
        exit();
        }
    }

    return $this->render('MWANRegisterBundle:Default:login.html.twig');
 }

---------------------这是注销方法--------------------- -----

public function logoutAction(Request $request)
{
    $session= $this->getRequest()->getSession();
    $session->clear();
    return $this->render('MWANRegisterBundle:Default:login.html.twig');
}

  // listAction is action to render list.html.twig i want username of     session here 

 public function listAction (Request $request)
 {
    $session= $this->getRequest()->getSession();

        return $this->render('MWANRegisterBundle:Default:list.html.twig' );

}

请一步一步指导我......

2 个答案:

答案 0 :(得分:0)

即使在树枝中也不需要这个“hack”来检索已记录的用户名。

只需使用此代码段

即可
{{ app.user.username }}

如果您想确定该用户当前已登录,您可以添加一些显式控件

{% if app.user %}
  {{ app.user.username }}
{% endif %}

要获得完整的答案,我还要添加来自twig的会话检索

{{ app.session.get('parameterName') }}

答案 1 :(得分:0)

您可以使用{{app.session.get("nameOfSession")}}并设置会话{{app.session.set("name","value")}}

来访问您的会话

对于您的用户管理我建议您使用FOSUserBundle来获得最佳和安全的应用程序