Сеанс Symfony избегает _sf2_attributes

По-видимому, каждый ключ, который я сохраняю на сеансе Symfony2, находится под подразделением:

$session->set('foo', 'bar'); 

Это приведет к:

 array('_sf2_attributes' => array('foo' => 'bar')); 

Это проблема, потому что я создаю приложение, которое взаимодействует с устаревшим кодом. Я хочу использовать обработчик сеансов Symfony, но я хочу, чтобы старые части приложения могли читать из $_SESSION . Другими словами, я хочу

 $session->set('foo', 'bar'); 

а также

 $_SESSION['foo'] = 'bar'; 

иметь тот же эффект.

Я не видел какой-либо опции конфигурации для этого. Я использую специальный обработчик сеанса, который я установил

 session: handler_id: my_app.session_handler 

Поэтому не будет проблемой, что Symfony использует другое имя сеанса. Единственное решение, о котором я могу думать, это создать новый класс обработчика сеанса вокруг моего обработчика сеанса клиента ( my_app.session_handler ), который проверяет, пытается ли приложение получить доступ к _sf2_attributes но я думаю, что это очень уродливо, и я даже не уверен, что сработает.

Благодаря!

Это не только обработчик, который вы должны реализовать самостоятельно, но также должен быть вашим SessionStorage .

По умолчанию Symfony2 использует NativeSessionStorage . Вы должны искать метод loadSession() . Как вы можете видеть, он инициализирует сеанс с помощью $key полученного от getStorageKey() , который инициализируется здесь _sf2_attributes здесь – в AttributeBag

Дайте мне знать, если у вас возникли проблемы с введением пользовательского хранилища сеансов.