Php 会话未在vue+上工作;拉维页
我正在制作一个带有Php 会话未在vue+上工作;拉维页,php,laravel,session,vue.js,Php,Laravel,Session,Vue.js,我正在制作一个带有vue单文件组件的网页,并且laravel作为back-end该网页是多语言的,我用ajax发送用户选择的语言并将其保存到会话,这样我就可以setLocale(session()->get('lang;)在AppServiceProvider中,我需要laravel返回一些错误,比如授权、验证等。 问题是没有保存会话 如果我在保存会话的调用中return session()->get('lang'),它将返回我发送的内容。 但是如果我在下一次调用另一个控制器时return se
vue单文件组件的网页,并且laravel
作为back-end
该网页是多语言的,我用ajax发送用户选择的语言并将其保存到会话,这样我就可以setLocale(session()->get('lang;)
在AppServiceProvider中,我需要laravel返回一些错误,比如授权、验证等。
问题是没有保存会话
如果我在保存会话的调用中return session()->get('lang')
,它将返回我发送的内容。
但是如果我在下一次调用另一个控制器时return session()->get('lang')
,它将返回null
我正在使用文件驱动程序
,将其更改为cookie
,但它也不起作用
我如何才能使会话正常工作
根据要求
我正在使用laravel mix复制vue,据我所知,我没有使用任何代理,我现在正在本地运行它
我的路由在api文件上,所以我猜它使用api中间件默认值
Route::namespace('Home')->group(function(){
Route::get('home','HomeController@getIndex');
Route::get('home/change-lang','LangController@changeLang');
Route::get('news/{type}','NewsController@getNews');
});
控制器
<?php
namespace App\Http\Controllers\Home;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
class LangController extends Controller
{
//
public function changeLang(Request $request)
{
app()->setLocale($request->input('lang'));
session(['lang' => $request->input('lang')]);
return response()->json([
'lang' => app()->getLocale()
]);
}
}
AppServiceProvider
<?php
namespace App\Providers;
use Illuminate\Support\Facades\Blade;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
//
app()->setLocale(session()->has('lang') ? session()->get('lang') : 'es');
}
}
我这样发送请求
this.$axios.get(this.$asset('api/home/change-lang'),{
params : {
lang : this.$i18n.locale
}
})
您能否提供有关前端设置的更多详细信息?您是否正在使用webpack+后端代理?您使用的是web还是api中间件?最好是提供-路由定义、控制器方法和前端设置您是否使用web
中间件?这就是负责会话的中间件(正如我在这里的许多其他帖子上读到的)
this.$axios.get(this.$asset('api/home/change-lang'),{
params : {
lang : this.$i18n.locale
}
})