0
我在Fresh新項目中苦於Laravel的語言環境。我搜索了很多次,但他們沒有解決我的問題。Laravel 5.4語言環境在使用重定向時恢復爲默認值()
然後我跟着locale in laravel 5.4 returns to the pervious locale after refresh源,但是當我通過視圖
return view('home');
調用頁面它只適用它,當我使用路線
return redirect()->route('home');
這裏是我不工作文件:
web.php
Route::get('/lang/{locale}', function ($locale) {
App::setLocale($locale);
Session::put('locale', $locale);
//return view('home'); ###### This one works
return redirect()->route('home'); ###### Where as this does NOT work
});
Route::get('/', function() {
return view('welcome');
});
Route::get('/home', '[email protected]')->name('home');
home.blade.php
<div class="panel-body">
You are logged in!
{{__('auth.success')}}
<br>
<a href="/lang/ru">Rus</a>
<br>
<a href="/lang/kg">Kgz</a>
</div>
ChangeLocale.php中間件(我稱它爲頁面的每個請求)
public function handle($request, Closure $next)
{
if(Session::has('locale')) {
app()->setLocale(Session::get('locale'));
}
return $next($request);
}
在此先感謝;)
好吧,以後我改
Route::get('/home', '[email protected]')->name('home');
到
Route::get('/home', '[email protected]')->name('home')->middleware('changeLocale');
它開始工作。
那麼,爲什麼我的中間件不工作?
我應該將中間件單獨分配給我的所有路由嗎?
創建一個路由組,將中間件應用於「lang/{locale}」以外的路由。 –