[英]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.