Пытаясь перейти с Symfony 2.0 на 2.1, я обнаружил интересную проблему.

Я не могу получить собственный идентификатор сеанса, даже в простой, только что загруженной копии Symfony 2.1.

/**
 * @Route("/sess")
 */
public function sessionAction()
{
    $session = $this->getRequest()->getSession();
    return new Response($session->getId());
}

Что-то там существенно изменилось?

0
acid 8 Сен 2012 в 14:00
1
Судя по всему, я получаю идентификатор сеанса, когда помещаю $session->start(); перед возвратом Response(). Для меня это как-то странно - в 2.0 сессия запускалась автоматически (я думаю).
 – 
acid
8 Сен 2012 в 14:10
Более того, если я удалю метод start() и использую $session->set(), он будет работать нормально. Проблема в том, что я не хочу устанавливать какие-либо переменные сеанса, просто получаю текущий session_id (скорее всего, без вызова метода start().
 – 
acid
8 Сен 2012 в 14:16

1 ответ

Лучший ответ

Взгляните на этот документ (в разделе app / config / config.yml раздел)

В Symfony 2.1 сессия всегда запускается по запросу. Поэтому я бы сказал, что то, что вы видите, является нормальным поведением. Вам необходимо явно запустить сеанс, прежде чем вы сможете получить идентификатор сеанса. Я не проверял, но, возможно, установка первой переменной также запускает сеанс, потому что она работает после вызова set ().

5
mgiagnoni 8 Сен 2012 в 14:51
У вас неработающая ссылка
 – 
FreeLightman
16 Авг 2017 в 20:18