私は2つのアプリケーションを持っています。 Zend Frameworkにはレガシーのものが1つ、Symfony 3.1の新しいものは古いものとセッションを共有する必要があります。Symfony3アプリケーションでZend2セッションを読む方法
私はapp_dev.phpに行って、session_start(); var_dump($_SESSION);
と書いていますが、セッションで '__ZF'キーが表示され、symfony3アプリケーションでアクセスする必要があります。
明らかに、上記のコードは、セッションがドメイン内で共有されているかどうかを確認することだけでした。
symfony3アプリでは、私はイベントKernelEvents::REQUEST
を申請しようとしました。そこからリクエストからrawセッションを取得し、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