Laravel 5 - 路线中的会话

时间:2015-05-19 21:30:30

标签: php session laravel laravel-5

我想在Laravel 5中使用动态路由依赖于语言首选项,而不是在子域/段上。有一种默认语言,即使用户没有登录,用户也可以更改它(使用GET参数)。更改将保留在会话中(注册用户可以保存)。 SEO不应该是一个问题(有一个网站默认语言,机器人应该总是这样)。

问题是routes.php中没有应用程序会话(我想由于Laravel设计)。我想在routes.php中使用switch或trans()来动态创建它们,但它与应用程序不是同一个会话。

我尝试过使用服务容器,但此时会话(https://github.com/laravel/framework/pull/7933#issuecomment-78175846)没有完全正常工作,因此我无法使用它来初始化配置变量。

中间件是另一种选择,但它们是在路线之后加载的。

有没有办法在路线中使用会话?我有任何(更好的)替代方案来管理这个问题吗?

1 个答案:

答案 0 :(得分:0)

请求完成后,中间件不一定会被加载。请查看文档:{​​{3}}

  

中间件在请求之前或之后运行是否取决于中间件本身。

如果我理解正确,您可以使用以下代码参考相应的控制器:

<?php namespace App\Http\Middleware;

use Closure;

class BeforeMiddleware implements Middleware {

    public function handle($request, Closure $next)
    {
        // Perform action

        return $next($request);
    }
}

虽然我没有测试过这个。

话虽如此,我仍然不会使用提供不同内容的相同网址。至少使用规范网址,将搜索爬虫指向正确的方向。