1
我试图在Laravel中创建语言环境切换器。Laravel中的语言环境不变
当用户登录,切换效果很好,但是当客人,什么也没发生,我无法找到的bug ......
这里是我的文件:
在我登录观,我有我的切换:
<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
我有一个全球性的中间件处理区域设置:
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所以,它应该工作的结束,但如果我把这个同一行
dd(Lang::getLocale());
在登录视图(它会返回重定向后回到那里() - > back();),它给我“es”
我不明白为什么!
任何想法???
编辑:
当我更换:
return redirect()->back();
与
return view ('auth/login');
它的工作原理。
扩展,看来,当我使用重定向(),它会失败......仍然不知道如何解决它。