我有一个简单的应用程序,并且希望能够更改语言。 在我的主控制器中,我有:
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函数遇到中间件“会话”,但会话变量不存在。
这就是我的“季节”中间件的样子:
'sessions' => [
\Illuminate\Session\Middleware\StartSession::class,
]
它实际上同时攻击了“ api”和“会话”中间件。
有什么想法我在做什么错吗?
答案 0 :(得分:0)
这对我有效(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。