【发布时间】:2021-01-10 12:48:02
【问题描述】:
假设我有这种网址:
example.com/en/
example.com/en/login
example.com/fr/login
我想使用中间件来设置语言,然后返回要处理的路由,而不需要语言部分。所以路由器会得到/ 或/login,没有任何语言的东西。
public function handle(Request $request, Closure $next) {
app()->setLocale($request->segment(1));
// $request->server->set('REQUEST_URI', substr($_SERVER['REQUEST_URI'], 4));// not working
return $next($request);
}
【问题讨论】:
-
谢谢,但这对我没有帮助。我需要能够从中间件处理它,为整个应用程序工作,因为例如你的文章中显示的内容无法用于来自 jetstream 的路线。
-
您将需要使用 session/cookie/query 字符串来指示在重定向到路径中没有语言环境的 URL 后的语言环境
-
错了。如果您使用
setLocale设置语言环境,您可以使用它,即使它不在 cookie 或任何东西中,应用程序已经知道它。
标签: laravel middleware laravel-routing laravel-middleware laravel-8