2013-04-20 87 views
0

我是symfony的业余爱好者。我想用SESSION_ID在我的代码Symfony2:新会话()给出错误“一个会话已经开始......”

当我改变php.ini文件和设置session.auto.start可变真正我提供虚假此参数后symfony的错误 我应该使用

$session = new Session(); 

但现在我有一个新的错误,当我执行的indexAction():

An exception has been thrown during the rendering of a template ("Notice: A session had already been started - ignoring session_start() in C:\xampp\htdocs\artgirl\app\cache\dev\classes.php line 105") in "DotArtBundle:Basket:index.html.twig". 
500 Internal Server Error - Twig_Error_Runtime 
1 linked Exception: ErrorException » 

BasketController:

class BasketController extends Controller { 
    public function getStaticAction(){ 
     $session = new Session(); 
     $session->start(); 

     $em = $this->getDoctrine()->getManager(); 
     $sql = "Select ... where basket_id = '".$session->getId()."'"; 
    } 
    //############################################### 
    public function indexAction(){ 
     $user = new User(); 
     $form = $this->createFormBuilder($user) 
        ->add('username', 'text') 
        ->add('password', 'text') 
        ->add('email', 'text') 
        ->getForm(); 
    return $this->render('DotArtBundle:Artist:register.html.twig', array('form' => $form->createView(l))); 
    } 
} 

我在base.html.twig

 {% set vPrice = render(controller('DotArtBundle:Basket:getStatic')) %} 
+0

您是否在使用Symfony 2.1或更高版本? – 2013-04-20 12:47:16

+0

是的Oshawott,我使用Symfony2.2.0 – 2013-04-20 12:56:08

+0

当我从IT部门获得一个新版本的PHP 5.3.3版本的新服务器时,我遇到了这个问题。 Symfony不会在PHP上运行,所以我升级到5.6,它工作正常。 – Halfstop 2016-02-25 15:51:46

回答

2

在2.1版本中,这些变化会议是如何工作的,而不是他们的需求开始汽车发动使用getStaticAction()。

据我所知,Symfony 2会话与PHP会话不兼容,而Symfony替换了很多基本的PHP会话函数,因此您需要关闭php.ini中的自动启动并使用类似方式初始化会话:

use Symfony/Component/HttpFoundation/Session/Session; 
$session = new Session(); 
$session->start(); 

那么你应该能够做这样的事情,无论你需要的ID:

$session = $this->getRequest()->getSession()->get('id'); 

的Symfony explains their sessions handling over here,可能是值得一读。