두 개의 응용 프로그램이 있습니다. 하나는 Zend Framework로 작성되었으며, 새로운 Symfony 3.1은 이전 세션과 세션을 공유해야합니다.Symfony3 응용 프로그램에서 Zend2 세션을 읽는 방법
이전 응용 프로그램에서 네이티브 파일 저장소가 사용되는 이유는 app_dev.php에 가서 session_start(); var_dump($_SESSION);
이라고 쓰면 세션에서 '__ZF'키가 표시되고 symfony3 응용 프로그램에 액세스해야합니다.
분명히 위의 코드는 세션이 도메인 내에서 공유되는지 확인하는 것입니다.
symfony3 앱에서 나는 KernelEvents::REQUEST
이벤트를 등록하려고 노력했다. 요청에서 원시 세션을 얻고 Zend2에서 온 매개 변수가있는 가방을 만들고 싶었다.
class SessionSubscriber implements EventSubscriberInterface
{
public function onKernelRequest(GetResponseEvent $event)
{
if ($event->isMasterRequest() && true == $event->getRequest()->hasSession()) {
var_dump($event->getRequest());
$event->getRequest()->getSession()->registerBag(new ZendSessionBag());
var_dump($event->getRequest()->getSession()->getBag('zf'));
exit;
return;
}
}
public static function getSubscribedEvents()
{
return array(
KernelEvents::REQUEST => (array('onKernelRequest', 127))
);
}
}
그러나 나는이 내 가방은 지금까지 모습입니다 $event->getRequest();
원시 세션 데이터에 액세스 할 수 없습니다. 내가 이해에서 나는 세션을 얻을 후라는 이름의 가방을 얻을 때
class ZendSessionBag implements SessionBagInterface
{
private $storageKey;
private $sessionData;
public function __construct($storageKey = '__ZF')
{
$this->storageKey = $storageKey;
}
public function getName()
{
return 'zf';
}
public function initialize(array &$array)
{
var_dump($array); // here should be raw $_SESSION data
$this->sessionData = &$array;
}
public function getStorageKey()
{
return $this->storageKey;
}
public function clear()
{
$this->sessionData = [];
}
}
그래서 "ZF"나는 데이터에 액세스 할 수 있습니다 초기화() 메소드 원시 세션 데이터에 액세스 할 수 있어야합니다. 어떤 도움을 주시면 감사하겠습니다
session:
storage_id: session.storage.php_bridge
handler_id: session.handler.native_file
save_path: "/var/lib/php5/sessions"
:
이것은 또한 내 설정에 관한 세션입니다.
기존 세션을 연결하는 데 [TheodoEvolutionSessionBundle] (https://github.com/theodo/TheodoEvolutionSessionBundle)을 사용 해본 적이 있습니까? 가장 큰 차이점은 자신의 가방 구현을 등록하고 있지만 번들 [Symfony에서 제공하는 것들을 사용] (https://github.com/theodo/TheodoEvolutionSessionBundle/blob/master/Manager/BagManager.php#L36)입니다. –
예 시도해 보았지만 SF 3.1과 호환되지 않습니다. 비슷한 솔루션을 구현하려했지만 작동하지 않았습니다. – Robert