2013-04-20 2 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))); 
    } 
} 

Я использую getStaticAction() в моем base.html.twig

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

Вы используете Symfony 2.1 или новее? –

+0

Да Oshawott, я использую Symfony2.2.0 –

+0

Эта проблема возникла для меня, когда мне был предоставлен новый сервер от ИТ, у которого была старая версия PHP версии 5.3.3. Symfony не будет работать на PHP, который старый, поэтому я обновился до 5.6, и он отлично работает. – Halfstop

ответ

2

В версии 2.1 они изменили, как работают сессии, вместо автоматического запуска они начали по требованию.

Как я понимаю, сеансы 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, может быть стоит прочитать.

Смежные вопросы