2015-01-26 93 views
0

对不起,如果在我找不到之前已询问此问题。我找不到我正在寻找的答案。传统应用程序和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(); 

似乎应该有一种方法来集中它。

UPDATE 该手册给出了一个例子,但如果它应该在控制器,服务,实体,或配置去的地方却没有说。

我试着在控制器中使用示例代码,当我在$ session上执行print_r时,我看不到任何旧式会话数据。

**

在此先感谢。

+1

那么你尝试过了。显示一些代码和努力。 – 2015-01-26 18:20:10

+0

@Paziツ这是问题的一部分。 Symfony手册中给出的示例不会说明我需要修改哪些文件。如果我不知道如何放置它们,我如何显示示例? – 2015-01-26 18:41:45

+0

你已经在[TheodoEvolutionSessionBundle](https://github.com/theodo/TheodoEvolutionSessionBundle)上看过了吗?这实现了“遗留应用程序和Symfony2之间的会话桥”。支持symfony1也。请参阅文档。 – Matteo 2015-01-27 08:11:41

回答

2

您正在查看的是symfony使用的组件的示例代码。 Symfonys会话从参数设置到app/config.yml中初始化。组件说明仅在您使用symfony以外的组件时才有。你想要的是第一个。然而,使用:

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

意味着,如果你包括你的其他应用程序中的symfony symfony的地方进行实例化之前session_start()被调用时使用。我没有测试过这个,但它仍然可以让它们并行运行,但是你可能最终不得不对会话处理器做一些定制。

也许考虑使用PDO的会话处理程序:http://symfony.com/doc/current/cookbook/configuration/pdo_session_storage.html

+0

感谢您的洞察力。这是否意味着我必须将symfony代码放在我的遗留系统中才能访问Symfony中遗留系统的会话数据?再次感谢! – 2015-01-27 01:14:51

+0

在一些玩配置后。我能够获得传统的会话数据。感谢您的见解。第一个配置是我需要的正确配置。还使用$ session = new Session(new PhpBridgeSessionStorage()); $ session-> migrate();诀窍。再次感谢! – 2015-01-27 17:35:26

+0

嗨,你是如何最终构建项目的?您是否在旧版应用程序中添加了symfony项目?谢谢! – amcastror 2017-02-20 22:07:20

相关问题