Laravelでロケールスイッチャーを作成しようとしています。Laravelでロケールが変更されない
ユーザーがログインしている場合は、スイッチャーがうまく動作しますが、ゲストは、何も起こりません、私はバグを見つけることができないとき...ここ
が私のファイルです:私のログインビューで
、私が持っています私のスイッチャー:
<ul class="dropdown-menu">
<li><a class="mexico" href="{{ URL::action('[email protected]', 'es') }}">
<img src="/images/flags/MX.png" alt="Español"> Español</a></li>
<li><a class="english" href="{{ URL::action('[email protected]', 'en') }}">
<img src="/images/flags/GB.png" alt="English"> English</a></li>
</ul>
ここでは私のLanguageControllerです:
class LanguageController extends Controller
{
public function update($locale){
if(Auth::check()){
Auth::user()->locale = $locale;
Auth::user()->save();
}
Lang::setLocale($locale);
app()->setLocale($locale);
return redirect()->back();
}
}
マイroutes.phpの
私はロケールを扱う世界的なミドルウェアいるRoute::get('lang/{lang}', '[email protected]'); // This is outside any middleware
:デフォルトでは、ユーザーがログインしている場合は、ロケールが、そうでない場合は、DBに
public function handle($request, Closure $next)
{
if (Auth::check()) {
app()->setLocale(Auth::user()->locale);
}
else {
$locale = Lang::getLocale();
app()->setLocale($locale);
}
return $next($request);
}
保存されているアプリのロケールが設定されている...
ロケールはスペイン語です。
英語を選択しようとすると、何もしません。
dd(Lang::getLocale());
はそうLanguageControllerの末尾に「EN」を私に与えて、それが動作するはずですが、私は、ログインビューで
dd(Lang::getLocale());
これと同じ行を置けば(それはリターンリダイレクトした後、そこに戻って取得します() - > back();)、それは私に "es"を与える
私は理解できない!
EDIT:
return redirect()->back();
それが動作
return view ('auth/login');
で:私は交換してください
。
これを拡張すると、私がredirect()を使用すると失敗するように思えます...それを修正する方法はまだ分かりません。ここで