会话不在 Vue.js 和 Laravel 中存储数据

May*_*iya 4 php laravel vue.js laravel-5.7

我试图在来自 vue.js 的每个 AJAX 调用中将数据存储到 Laravel 会话中。

我想使用会话在 Laravel 购物车中添加一个产品,但它不存储任何类型的会话数据。我还添加了网络中间件,但没有运气。

api.php

<?php
    Route::group(['namespace' => 'Api'],function(){
        Route::resource('product','ProductController');
        Route::post('add-to-cart','ProductController@addToCart');
    });
Run Code Online (Sandbox Code Playgroud)

产品控制器.php

<?php
    public function addToCart(Request $request){
    $product = $request->all();

    $cart = Session::get('cart');
    $cart[$product['id']] = $product;
    Session::push('cart', $cart);

    return Response::json(['success' => true, 'cart_items' => Session::get('cart')]);
}
Run Code Online (Sandbox Code Playgroud)

产品列表组件.vue

addToCartProduct(product){
    fetch('api/add-to-cart',{
        method: 'post',
        body:JSON.stringify(product),
        headers:{
            'content-type':'application/json'
        }
    })
    .then(res => res.json())
    .then(res => {
        console.log(res);
    })
    .catch(err => console.log(err));
}                 
Run Code Online (Sandbox Code Playgroud)

小智 5

您的所有路由都在api中间件中注册,如果您检查该app/Http/Kernel.php文件,您将看到它没有注册中间件StartSession。因此,您必须先启动会话才能将数据保存到会话中。

在此处输入图片说明