Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 会话未在vue+上工作;拉维页_Php_Laravel_Session_Vue.js - Fatal编程技术网

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
    }
})