2014-03-24 3 views
1

가 분명히 나는 ​​Symfony2 세션에 저장할 때마다 키가 하위 키 아래에 간다 _sf2_attributes 레거시 코드와 상호 작용합니다. Symfony의 세션 핸들러를 사용하고 싶지만 앱의 오래된 부분을 $_SESSION에서 읽을 수 있기를 바랍니다. 즉, 나는 같은 효과가심포니 세션을 피하기는

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

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

를 원한다.

나는 이것을 달성하기 위해 어떤 configuration option을 보지 못했습니다. 내가 설정 한 특정 세션 핸들러를 사용합니다.

session: 
    handler_id: my_app.session_handler 

그래서 Symfony가 다른 세션 이름을 사용하는 것은 문제가되지 않습니다. 내가 생각할 수있는 유일한 해결책은 응용 프로그램이 _sf2_attributes에 액세스하려고하는지 확인하는 내 고객 세션 처리기 (my_app.session_handler)를 중심으로 새로운 세션 처리기 클래스를 만드는 것이지만 매우 추악하다고 생각하며 제대로 작동하는지 확신 할 수 없습니다.

감사합니다.

답변

0

이것은 독자적으로 구현해야하는 핸들러 일뿐만 아니라 SessionStorage이어야합니다.

기본적으로 Symfony2는 NativeSessionStorage을 사용합니다. 방법 loadSession()을 찾고 있어야합니다. 당신은 문제가 사용자 세션 저장을 주입이 있으면 알려 보자 AttributeBag

에서 - 당신이 볼 수 있듯이, 여기 _sf2_attributes으로 초기화됩니다 getStorageKey()로부터받은 $key와의 세션을 초기화합니다.

+0

고맙습니다. 이 옵션을 선택했지만 이것이 내가 할 수있는 최선이라고 확신하지 못합니다. 이제는 Session API에 대해 잘 알고 있지만 전체 시스템이 변수 참조로 작동하기 때문에 원하는 것을 성취하기가 매우 어려워 보입니다. – gphilip

+0

마침내 이것과 함께 올랐습니다 : https://gist.github.com/tcz/9756112 지옥과 같이 추악하지만 작동합니다. 나는 세션 설정에서'storage_id' 키를 ​​사용하는데 이것은 잘 설명되어 있지 않습니다. 감사! – gphilip

+0

비슷한 문제가 있지만 이번에는 Memcached를 가지고 있는데, 설정 파일에 handler_id : session.handler.memcached가 있습니다. 서비스에 정의되어있는 하지만 세션은 $ session->을 사용하여 memcached 서버에 저장되지 않습니다. set ('foo', 'bar'); 어떤 도움이 필요합니까? – Sekai