Я хочу изменить свой язык с помощью вызова axios:
changeLanguage(code) {
return axios
.put(`/api/lang/` + code)
.then(response => {
console.info(response.data);
})
.catch(err => {
return "Error switching language";
console.info(err.response);
});
},
Мой маршрут API:
Route::group(['middleware' => ['sessions']], function () {
Route::put('lang/{language}', 'LanguageController@switchLang');
});
Промежуточное ПО для моих сессий:
'sessions' => [
\Illuminate\Session\Middleware\StartSession::class,
]
Мой LanguageController:
public function switchLang(Request $request, $lang)
{
session(['applocale' => $lang]);
app()->setLocale($lang);
}
Мой IndexController:
public function index()
{
\Debugbar::info("Index getLocale is: " . app()->getLocale());
\Debugbar::info("Index Session locale is: " . session('applocale'));
}
Проблема в том, что LanguageController не может установить переменную сеанса, которую можно прочитать из IndexController. Похоже, что они не используют одни и те же переменные сеанса. И каждый раз, когда я обновляю страницу, отображается старый язык.
Как правильно изменить текущий языковой стандарт с помощью Axios?
Определение маршрута @Devon находится в web.php: Route :: get ('/', 'IndexController @ index') -> name ('index');
Какое определение маршрута для этого метода индексации? Маршруты API обычно не имеют состояния.