显然,我保存到Symfony2会话的每个密钥都在一个子密钥下:
$session->set('foo', 'bar');
将导致:
array('_sf2_attributes' => array('foo' => 'bar'));
这是一个问题,因为我正在构建一个与遗留代码交互的应用程序。我想使用Symfony的会话处理程序,但我希望应用程序的旧部分能够从$_SESSION
读取。换句话说,我想要
$session->set('foo', 'bar');
和
$_SESSION['foo'] = 'bar';
具有相同的效果。
我没有看到任何configuration option来实现这一目标。我使用我设置为
的特定会话处理程序session:
handler_id: my_app.session_handler
因此,Symfony使用不同的会话名称不会成为问题。我能想到的唯一解决方案是围绕我的客户会话处理程序(my_app.session_handler
)创建一个新的会话处理程序类,检查应用程序是否尝试访问_sf2_attributes
,但我认为它非常难看,我不是甚至肯定是否会奏效。
谢谢!
答案 0 :(得分:0)
这不仅是您必须自己实施的处理程序,而且也应该是您的SessionStorage
。
默认情况下,Symfony2使用NativeSessionStorage
。您应该寻找方法loadSession()
。正如您所看到的,它使用$key
收到的getStorageKey()
初始化会话,该会话在AttributeBag
_sf2_attributes
进行初始化
如果您在注入自定义会话存储时遇到问题,请告诉我。