6

我们的网站建立在自定义 php mvc 框架之上,我们希望将每个流程(例如:注册)慢慢转换为 Laravel。

所以本质上,现有代码和使用 laravel 的新代码必须共存。但是我们遇到了一个问题,laravel 设置的会话信息对其他 mvc 不可用,反之亦然,因为它们的约定。

例如,自定义 mvc 使用以下内容。

$_SESSION['AUTH']='TRUE';

虽然 Laravel 使用这样的东西。

Session::put('AUTH', 'TRUE');

我们尝试通过 laravel 类设置 $_SESSION['AUTH'] = 'TRUE'。但是当控制权传递给旧的 MVC 时,我们无法访问它。

我知道它很复杂,我应该等待将整个代码库转换为 Laravel,然后完成它。但我们是一家资源最少的小公司。所以我们没有奢侈地停止功能开发并花时间专门使用 Laravel 重写。

所以我的问题是这个。如果通过任何机制,我们如何实现这一目标?

全局变量?

还有其他建议吗?

4

3 回答 3

3

我建议您在Auth这里使用 Laravel 的 -Class,收听auth.login事件并手动设置会话标志。

Event::listen('auth.login', function($user)
{
    $_SESSION['AUTH']='TRUE';
});

这是最简单的方法,您只需在完全迁移到 Laravel 时删除事件侦听器。

我知道这是一件又快又脏的事情,但是在完全迁移之后,您不想再使用 the $_SESSIONever 来管理您的身份验证;)所以我认为这应该是新旧代码库之间的一个很好的桥梁。

于 2013-09-23T06:44:51.943 回答
1

例如,如果您有以下文件夹结构

项目文件夹/oldMVC

项目文件夹/Laravel

在 oldMvC/main.php 我们包括以下内容

require '../Laravel/bootstrap/autoload.php';
require_once '../Laravel/bootstrap/start.php';

之后,我们能够从非 Laravel MVC 访问 Laravel 中设置的会话和其他配置变量。

于 2014-03-02T02:06:09.083 回答
1

实际上,仅通过要求bootstrap/autoload.phpbootstrap/start.php您将无法访问真正的 Laravel 会话。甚至不再打电话Application::boot()了。

我创建了一个 Gist,它可以共享 Laravel 的会话并检查来自外部项目的身份验证:

https://gist.github.com/frzsombor/ddd0e11f93885060ef35

于 2015-01-09T11:16:53.743 回答