laravel 5.3会话访问购物车

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了laravel 5.3会话访问购物车相关的知识,希望对你有一定的参考价值。

每当我按下添加到购物车按钮时,旧购物车将替换新购物车,而不是将新商品添加到旧购物车,如果存在,则不会更新数量。以下是代码和图片。

我的Cart.php模型

class Cart{

public $spares=null;
public $totalQuantity=0;
public $totalPrice=0;

public function __construct($oldCart){
    if($oldCart){
        $this->spares=$oldCart->spares;
        $this->totalPrice=$oldCart->totalQuantity;
        $this->totalQuantity=$oldCart->totalQuantity;
    }
    else{
        $this->spares=null;
    }

}

public function add($spare,$id){
     $storedItem=['qty' => 0,'price'=>$spare->price,'item'=>$spare];
    if($this->spares){
        if(array_key_exists($id,$this->spares)){
            $storedItem=$this->spares[$id];
        }
    }
    $storedItem['qty']++;
    $storedItem['price']= $spare->price*$storedItem['qty'];
    $this->spares[$id]=$storedItem;
    $this->totalQuantity++;
    $this->totalPrice+=$spare->price;
}

}

我的路线

Route::get('/addToCart/{id}',['uses'=>'searchController@getAddToCart',
'as'=>'product.addToCart'] );

我的控制器

 public function getAddToCart(Request $request,$id){
     $spares=Spares::find($id);
     $oldCart=Session::has('cart')? Session::get('cart'):null;
     $cart=new Cart($oldCart);
     $cart->add($spares,$spares->id);

     $request->session()->put('cart',$cart);
     dd($request->session())->get('cart');
     return redirect()->back();

 }

这是我目前得到的会话图像我不知道这个Store对象。我无法通过名称'购物车'访问

enter image description here

我应该得到的方式就像跟随

enter image description here

这是dd方法里面的所有会话对象如何只访问购物车部分? enter image description here

非常感谢你提前。

答案

使用session()->push()而不是session()->put()

$request->session()->push('cart', $cart);

由于qazxsw poi qazxsw poi将覆盖以前的数据,而qazxsw poi将为会话数组添加新值。

另一答案

滑这部分

Laravel documentation

因为它会重置您的购物车会话。像这样使用这个功能

put

以上是关于laravel 5.3会话访问购物车的主要内容,如果未能解决你的问题,请参考以下文章

在同一控制器中以其他方法访问会话数据在 laravel 中不起作用

Laravel 5.2 或 5.3:如何正确实施检查会话是不是已登录

Laravel 5.3 登录成功后声明全局会话变量

Laravel 5.3记住我身份验证问题

Laravel 5.3记住我身份验证问题

如何在不使用请求的情况下删除 Laravel 5.3 中的会话?