当我点击按钮时我需要增加变量的值,但值总是一个。我点击了按钮超过五次,但结果仍然是1.请查看附图。
我的购物车类
class Cart
{
public $totalQuantity = 0;
public function __construct($oldCart)
{
if ($oldCart) {
$this->totalQuantity = $oldCart->totalQuantity;
}
}
public function add()
{
$this->totalQuantity++;
}
}
控制器方法
public function getAddToCart(Request $request,$id){
$oldCart=null;
//code that i added now to check which returns null
dd($request->session()->get('cart'));
if($request->session()->pull('cart')) {
$oldCart=$request->session()->pull('cart') ;
}
$cart=new Cart($oldCart);
$cart->add();
$request->session()->push('cart',$cart);
dd($request->session()->pull('cart'));
return redirect()->back();
}
以下是图片
答案 0 :(得分:0)
Laravel doc:
pull方法将从a中的会话中检索和删除项目 单一陈述
所以,如果你把它拉到if状态,那么第二次拉动没有任何东西可以提供给你,因为你已经删除了它:)。你应该使用get,或者直接在$ oldCart变量中使用。
哦,如果你使用push方法,它会被存储为一个数组,所以你的代码应该是这样的:
$oldCart = $request->session()->pull('cart');
if ($oldCart) {
$cart = new Cart($oldCart[0]);
} else {
$cart = new Cart(null);
}
$cart->add();
$request->session()->push('cart',$cart);
甚至更好:
$oldCart = null;
if ($request->session()->has('cart')) {
$oldCart = $request->session()->get('cart');
}
$cart = new Cart($oldCart);
$cart->add();
$request->session()->put('cart',$cart);