2013-04-20 107 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,可能是值得一讀。