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对象。我无法通过名称'购物车'访问
我应该得到的方式就像跟随
非常感谢你提前。
答案
使用session()->push()
而不是session()->put()
$request->session()->push('cart', $cart);
由于qazxsw poi qazxsw poi将覆盖以前的数据,而qazxsw poi将为会话数组添加新值。
另一答案
滑这部分
Laravel documentation
因为它会重置您的购物车会话。像这样使用这个功能
put
以上是关于laravel 5.3会话访问购物车的主要内容,如果未能解决你的问题,请参考以下文章
在同一控制器中以其他方法访问会话数据在 laravel 中不起作用