我的家乡路线
Route::get('/', 'HomeController@index')->name('home');
改变语言的具体途径
Route::get('/setLocale/{locale}', 'HomeController@setLocale')->name('setLocale');
在HomeController->setLocale($locale)
我检查$locale
是否是有效的区域设置,然后只需执行
\App::setLocale($locale);
然后重定向到家。
在HomeController->index()
中,我使用
$locale = \App::getLocale();
问题是,在用户更改区域设置后,应用程序会设置新的区域设置,重定向,但检测到的区域设置仍然是DEFAULT区域设置,而不是用户设置的新区域设置。
我如何/何时/何时可以持续更改应用区域设置?
我认为Laravel在使用setLocale
时使用getLocale
并在使用ID | Value
时重新阅读时设置了区域设置Cookie,但现在我认为这不是Laravel的工作方式。
我再次问:如何设置应用区域设置,以便在更改页面后保留?
答案 0 :(得分:5)
我是通过使用中间件来做到的。这是我的代码:
LanguageMiddleware:
public function handle($request, Closure $next)
{
if(session()->has('locale'))
app()->setLocale(session('locale'));
app()->setLocale(config('app.locale'));
return $next($request);
}
记得注册你的中间件:)
用户可以通过简单的GET-Route更改语言:
Route::get('/lang/{key}', function ($key) {
session()->put('locale', $key);
return redirect()->back();
});
希望这可以帮助你:)
答案 1 :(得分:1)
stage.addEventListener(Event.ENTER_FRAME, range);
function range(event: Event) {
if (limit.hitTestObject(flappy)) {
flappy.x -= 2.5;
}
else if (wall.hitTestObject(flappy)) {
flappy.y += 20;
}
}
仅适用于当前请求。如果您希望记住该值,则必须手动设置cookie。
我建议使用middleware来执行此操作。