我有一个简单的应用程序,我希望能够更改语言。 在我的主 Controller 中,我有:
session(['applocale' => 'en']);
$request->session()->put('applocale','en');
我知道这两行是一样的,但我想确定它们都不起作用。
然后我有 API 方法:
public function switchLang(Request $request, $lang)
{
error_log("Current language is: " . session('applocale'));
error_log("Current language is: " . $request->session()->get('applocale'));
}
这里 error_log 什么也没显示。
我正在关注这个话题:Laravel 5.3 - How to add Sessions to API
without CSRF?
在 Debugbar 中,我可以看到我的 API 函数已命中中间件“ session ”,但 session 变量不存在。
这就是我的“季节”中间件的样子:
'sessions' => [
\Illuminate\Session\Middleware\StartSession::class,
]
它实际上同时命中了“api”和“session”中间件。
知道我做错了什么吗?
最佳答案
这对我有用 (Laravel-5.7 )。
首先将api
中间件组改成-
'api' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
'throttle:60,1',
'bindings',
],
在 App\http\kernel.php
中。
引用 here .
关于php - Laravel - 在 API 中访问 session 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52279468/