2016-11-03 96 views
0

使用laravel 5.3 IM和項目SHOOPING車 當我點擊的項目的數量沒有增加如何增加值時,按一下按鈕laravel 5.3

產品控制研究

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

    $request->session()->put('cart',$cart); 
// TO show it dd($request->Session()->get('cart')); 
    return redirect()->route('product.index'); 
} 

和模型車:

class Cart 
{ 
public $items = null; 
public $totalQty = 0; 
public $totalPrice = 0; 

public function __consruct($oldCart){ 
    if($oldCart){ 
    $this->$items = $oldCart->items; 
    $this->$totalQty = $oldCart->totalQty; 
    $this ->$totalPrice = $oldCart->totalPrice; 
    } 

} 
    public function add($item,$id){ 
    $storedItem = ['qty' => 0,'price' => $item->price,'item' => $item]; 
    if ($this->items) 
    { 
     if(arrary_Key_exists($id,$this->items)) 
     { 
     $storedItem = $this->items[$id]; 
     } 
    } 
     $storedItem['qty']++; 
     $storedItem['price'] = $item->price * $storedItem['qty']; 
     $this->items[$id] = $storedItem; 
     $this->totalQty++; 
     $this->totalPrice += $item->price; 

    } 

    } 

這是一個產品頁面:

<a href="#"> <i class="fa fa-shopping-cart" aria-hidden="true"></i> Shopping Cart 
     <span class="badge">{{ Session::has('cart') ? Session::get('cart')->totalQty : '' }}</span> 
     </a> 

它應該添加項目和增量,但它只是顯示項目的id與增量它。

回答

0

會話保存爲閃存數據。所以,只要您推送數據,您就需要保存會話。由於你沒有在你的代碼中做它總是得到一個新的第一個項目被添加到它的新車,我認爲你是混淆該號碼與ID,因爲totalQty將始終爲1.

所以請執行以下操作後將購物車對象放入會話中。

​​
+0

我試過,但仍然沒有工作 – ammar

+0

好讓做兩件事情。首先在getAddToCart中獲取此三元運算符值並將其從刀片中刪除。在過去,對於我來說,有時候三元操作員會陷入刀片模板中。其次,當你使用dd($ request-> session() - > all())欺騙整個會話時,請你分享結果。 OR print_r(session() - > all()); –

0

你的意思是這個

array:4 [▼ 
"_token" => "NaciZTnMzNzqB02Nvr7RtXJj7c5NtsUF339522l2" 
"_previous" => array:1 [▼ 
    "url" => "http://localhost:8000" 
    ] 
    "_flash" => array:2 [▼ 
"old" => [] 
"new" => [] 
] 

Cart {#163 ▼ 
+items: array:1 [▼ 
1 => array:3 [▼ 
    "qty" => 1 
    "price" => 20 
    "item" => Product {#172 ▼ 
    #fillable: array:4 [▼ 
     0 => "imgaePath" 
     1 => "title" 
     2 => "description" 
     3 => "price" 
    ] 
    #connection: null 
    #table: null 
    #primaryKey: "id" 
    #keyType: "int" 
    #perPage: 15 
    +incrementing: true 
    +timestamps: true 
    #attributes: array:7 [▼ 
     "id" => 1 
     "created_at" => null 
     "updated_at" => null 
     "imagePath" => "http://www.abebooks.com/images/books/harry-potter/deathly-hallows.jpg" 
     "title" => "hurry potter" 
     "description" => "the best book ever" 
     "price" => 20 
    ] 
    #original: array:7 [▼ 
     "id" => 1 
     "created_at" => null 
     "updated_at" => null 
     "imagePath" => "http://www.abebooks.com/images/books/harry-potter/deathly-hallows.jpg" 
     "title" => "hurry potter" 
     "description" => "the best book ever" 
     "price" => 20 
    ] 
    #relations: [] 
    #hidden: [] 
    #visible: [] 
    #appends: [] 
    #guarded: array:1 [▼ 
     0 => "*" 
    ] 
    #dates: [] 
    #dateFormat: null 
    #casts: [] 
    #touches: [] 
    #observables: [] 
    #with: [] 
    +exists: true 
    +wasRecentlyCreated: false 
    } 
] 
] 
+totalQty: 1 
+totalPrice: 20 
} 
+0

您可以執行以下操作:$ cart-> save(),然後將其保存在會話中。我們還可以使用$ request-> session() - > push($ cart.items,'cart_items')將會議內容存儲在會話中,並將它們作爲數組和數組的count()進行檢索,物品數量。 –

+0

它給了我一個erorr調用未定義的方法App \ Cart :: save()或使用未定義的常量項目 - 假定'項目' – ammar

+0

您是否在您的控制器中導入了使用它的Cart模型文件。 –