Переключите локаль laravel с помощью axios

Я хочу изменить свой язык с помощью вызова axios:

changeLanguage(code) {
                return axios
                    .put(`/api/lang/` + code)
                    .then(response => {
                        console.log(response.data);
                    })
                    .catch(err => {
                        return "Error switching language";
                        console.log(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?

Какое определение маршрута для этого метода индексации? Маршруты API обычно не имеют состояния.

Devon 13.09.2018 19:52

Определение маршрута @Devon находится в web.php: Route :: get ('/', 'IndexController @ index') -> name ('index');

dust_bg 14.09.2018 07:02
0
2
168
0

Другие вопросы по теме