【发布时间】:2018-07-14 10:26:19
【问题描述】:
我一直在尝试更新网站的语言。
控制器
public function getUpdateLanguage(Request $request) {
$request_data = $request->all();
\Session::put('locale', $request_data['language']);
return redirect()->back();
}
中间件:
public function handle($request, Closure $next)
{
if ( \Session::has('locale')) {
\App::setLocale(\Session::get('locale'));
}
return $next($request);
}
但if ( \Session::has('locale')) 的真正块永远不会执行,并且语言始终是“en”并且永远不会更新。如果我尝试它会很好
public function handle($request, Closure $next)
{
\App::setLocale('arabic');
return $next($request);
}
内核:
protected $middleware = [
\Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
\Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
\App\Http\Middleware\TrimStrings::class,
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
\App\Http\Middleware\TrustProxies::class,
\App\Http\Middleware\Localization::class,
];
本地化是我的中间件。语言更新控制器方法重定向到主页:
public function getIndex() {
return view('frontend.home');
}
有人可以指导我在哪里清除会话值,或者我做错了什么并且有更好的方法吗?
【问题讨论】:
-
请把
dump(session('locale'));放在return redirect()->back();之前。也把和handle方法第一行一样的代码放上去,显示结果。 -
它返回 ''arabic' 进行转储,在控制器中添加中间件的代码仍然给我 'en'
-
你能给我们看看你的内核吗??
-
@Sohel0415 更新
-
在本地化之前将此添加到您的中间件
\Illuminate\Session\Middleware\StartSession::class,
标签: php laravel session localization laravel-5.5