我想在Laravel 5中使用动态路由依赖于语言首选项,而不是在子域/段上。有一种默认语言,即使用户没有登录,用户也可以更改它(使用GET参数)。更改将保留在会话中(注册用户可以保存)。 SEO不应该是一个问题(有一个网站默认语言,机器人应该总是这样)。
问题是routes.php中没有应用程序会话(我想由于Laravel设计)。我想在routes.php中使用switch或trans()来动态创建它们,但它与应用程序不是同一个会话。
我尝试过使用服务容器,但此时会话(https://github.com/laravel/framework/pull/7933#issuecomment-78175846)没有完全正常工作,因此我无法使用它来初始化配置变量。
中间件是另一种选择,但它们是在路线之后加载的。
有没有办法在路线中使用会话?我有任何(更好的)替代方案来管理这个问题吗?
答案 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);
}
}
虽然我没有测试过这个。
话虽如此,我仍然不会使用提供不同内容的相同网址。至少使用规范网址,将搜索爬虫指向正确的方向。