Symfony 2.1 — Получение идентификатора сеанса

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

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

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

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


person acid    schedule 08.09.2012    source источник
comment
Видимо, я получаю идентификатор сеанса, когда ставлю $session->start(); перед возвратом Response(). Для меня это странно - в 2.0 сессия запускалась автоматически (я думаю).   -  person acid    schedule 08.09.2012
comment
Более того, если я уберу метод start() и воспользуюсь $session->set(), все будет работать нормально. Проблема в том, что я не хочу устанавливать какие-либо переменные сеанса, просто получить текущий session_id (скорее всего, без вызова метода start().   -  person acid    schedule 08.09.2012


Ответы (1)


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

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

person mgiagnoni    schedule 08.09.2012
comment
У вас битая ссылка - person FreeLightman; 16.08.2017