【问题标题】:Bridge session data between legacy Application and Symfony2在遗留应用程序和 Symfony2 之间桥接会话数据
【发布时间】:2015-03-25 05:20:49
【问题描述】:

抱歉,如果在我找不到之前有人问过这个问题。我找不到我正在寻找的答案。

我有一个使用 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 时,我看不到任何旧会话数据。

**

提前致谢。

【问题讨论】:

  • 那么你已经尝试了什么。展示一些代码和努力。
  • @Paziツ 这就是问题的一部分。 Symfony 手册中给出的示例没有说明我需要修改哪些文件。如果我不知道将它们放在哪里,我该如何展示示例?
  • 您已经在TheodoEvolutionSessionBundle 观看了吗?这实现了“遗留应用程序和 Symfony2 之间的会话桥”。也支持 symfony1。请参阅文档。

标签: php symfony session


【解决方案1】:

您正在查看的是 symfony 使用的组件的示例代码。 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

【讨论】:

  • 感谢您的洞察力。这是否意味着我必须将 symfony 代码放在我的遗留系统中,以便我从 Symfony 中的遗留系统访问会话数据?再次感谢!
  • 在玩了一些配置之后。我能够访问旧会话数据。感谢您的见解。第一个配置是我需要的正确配置。还使用 $session = new Session(new PhpBridgeSessionStorage()); $会话->迁移();成功了。再次感谢!
  • 嗨,您是如何最终构建项目的?您是否在旧版应用程序中添加了 symfony 项目?谢谢!
猜你喜欢
  • 1970-01-01
  • 2016-06-04
  • 2022-11-05
  • 2014-12-09
  • 1970-01-01
  • 2012-07-20
  • 1970-01-01
  • 1970-01-01
  • 2012-07-01
相关资源
最近更新 更多