簡體   English   中英

在舊版應用程序和Symfony2之間橋接會話數據

[英]Bridge session data between legacy Application and Symfony2

抱歉,在我找不到此問題之前,是否已提出此問題。 我找不到想要的答案。

我有一個要用Symfony2重建的舊應用程序,不幸的是,我需要並行運行一段時間,直到完成整個系統的重建。 我需要使symfony能夠訪問舊的會話數據才能起作用的部分。

我是在Symfony網站上找到的: http : //symfony.com/doc/current/cookbook/session/php_bridge.html http://symfony.com/doc/current/components/http_foundation/session_php_bridge.html

但是我不知道配置需要發生什么,我應該在哪里調用會話開始,以及如何從新應用程序訪問會話數據。

我會在我創建的每個控制器中放置symfony中給出的示例嗎?

use Symfony\Component\HttpFoundation\Session\Session;
use Symfony\Component\HttpFoundation\Session\Storage\PhpBridgeSessionStorage;

// legacy application configures session
ini_set('session.save_handler', 'files');
ini_set('session.save_path', '/tmp');
session_start();

// Get Symfony to interface with this existing session
$session = new Session(new PhpBridgeSessionStorage());

// symfony will now interface with the existing PHP session
$session->start();

似乎應該有一種將其集中化的方法。

更新手冊給出了一個例子,但沒有說明它是否應該放在控制器,服務,實體或配置中。

我嘗試在控制器中使用示例代碼,並且在$ session上執行print_r時,看不到任何舊式會話數據。

**

提前致謝。

您正在查看的是symfony使用的Component的示例代碼。 Symfonys會話從設置到app / config.yml中的參數初始化。 僅當您在symfony之外使用組件時,才使用組件說明。 您想要的是第一個。 但是使用:

#app/config.yml
framework:
    session:
        storage_id: session.storage.php_bridge
        handler_id: session.handler.native_file

如果在實例化symfony之前調用session_start()其他應用程序中包含symfony,則應使用它。 我還沒有測試過,但是讓它們並行運行仍然可以工作,但是您可能最終不得不對會話處理程序進行一些自定義。

也許考慮使用pdo會話處理程序: http : //symfony.com/doc/current/cookbook/configuration/pdo_session_storage.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM