Symfony2错误:无法启动会话,已由PHP启动

时间:2016-04-26 20:50:43

标签: php symfony session

在以下登录脚本中,即使我在验证用户后启动会话,也会抛出一个symfony异常,说明:

  

无法启动会话:已由PHP启动。

以下是我的登录功能(我没有使用symfony令牌和安全等会话):

public function loginAction(Request $request){
    if($request->getMethod() == 'POST'){
        $mail = $request->get('umail');
        $pass = $request->get('upass');
        $em = $this->getDoctrine()->getManager();
        $rep = $em->getRepository('SystemBundle:User');

        $user = $rep->findOneBy(array("email"=>$mail,"pass"=>$pass));
        if($user){
            $id = $user->getId();
            $type = $user->getType();
            $session = new Session();
            $session->start();
            $session->set('id',$id);
            $session->set('type',$type);
            if($type == "admin"){
                return $this->redirectToRoute('admin_homepage');
            }
            elseif ($type == "dis"){
                return $this->redirectToRoute('dis_homepage');
            }
            elseif ($type == "comp"){
                return $this->redirectToRoute('company_homepage');
            }
        }
        else{
            return new Response('not found where mail: '.$mail);
        }
    }
}

代码有问题吗? 请帮忙..

1 个答案:

答案 0 :(得分:0)

正如@JimL所说,

  

你不应该开始新的会话,因为Symfony会为你处理这个问题。您   可以使用$ session = $ request-> getSession();

获取它

这很重要,例如,如果您使用了一个使用会话的侦听器,然后您想使用Symfony表单(间接检查会话是否已启动)。