2016-05-27 8 views
2

Ich arbeite an einem Laravel-Shopping-Site-Projekt, und ich habe Probleme mit der Menge des Produkts in den Warenkorb. Ich bin relativ neu in Laravel, so wird es für mich komplizierter ... Die Sache ist, dass ich nicht wirklich ähnliche Produkte in einer effektiven Art und Weise (und nach) suchen kann.PHP Warenkorb mit Laravel - Menge Ausgabe

Aber als ich den „In den Warenkorb“ -Buttons drücken, wird diese Funktion ausgeführt wird:

public function cart(Product $product){ 

    $cart = session()->get('cart'); 

    // If Cart is empty, add a new array in the session 
    if ($cart == []) { 
     $cart[] = $product; 
     session()->put('cart', $cart); 
    }else{ 
     // else if not empty, loop the cart and look if similar product is in the cart. 
     for ($i = 0; $i <= count($cart); $i++) { 

      $array_cart = json_decode($cart[$i], true); 
      if ($product->id == $array_cart["id"]) { 
        $array_cart["id"] += 1; 
      }else{ 
       $cart[] = $product; 
       session()->put('cart', $cart); 
      } 
     } 
    } 

    return back(); 
} 

Die Produkte Objekte sind, und ich bin nicht sicher, wie Schleife, um die ID des Produkts zu finden Passen Sie die Array-Produkt-ID an. Ich habe versucht, json_decode(), um zu sehen, ob dies in ein Array machen würde, aber ich könnte hier falsch liegen, denn wenn ich den Wert zurückgeben, war es das gleiche "Objekt". Zum Beispiel kann ein einzelnes Produkt in den Warenkorb gelegt wird wie folgt aussehen:

[{"id": 4, 
"name": "HP Desktop", 
"description": "Ordinary desktop", 
"category": "Desktop", 
"price": 1, 
"views": 63, 
"created_at": "2016-04-11 14:42:58", 
"updated_at": "2016-05-27 09:12:59" 
}] 

Antwort

1

Sie benötigen einen foreach-Schleife, wird diese Schleife durch alle Objekte laufen.

So zum Beispiel können Sie diesen Code in einem controller laufen die id zu erhalten:

foreach($products as $product) { 
    dump($product->id); 
} 

Oder Sie können dies in einem blade view verwenden.

@foreach($products as $product) 
    dump($product->id); 
@endforeach 

Ich schlage vor, Sie quantity in Ihrem Objekt hinzuzufügen, als Sie den Preis der quantity und berechnen zu aktualisieren.

public function cart(Product $product){ 

    $cart = session()->get('cart'); 

    // If Cart is empty, add a new array in the session 
    if ($cart == []) { 
     $cart[] = $product; 
     session()->put('cart', $cart); 
    }else{ 
     // else if not empty, loop the cart and look if similar product is in the cart. 
     foreach ($cart as $product_item) { 
      if ($product->id == $product_item["id"]) { 
        $product_item["quantity"] += 1; 
        $found = true; 
      } 
     } 

     if($found !== true) { 
      $cart[] = $product; 
      session()->put('cart', $cart); 
     } 
    } 

    return back(); 
} 

Hoffe, das funktioniert!

+1

Ich möchte Ihnen so sehr danken! Ich möchte upvote, aber ich brauche 15 Ruf dafür. Aber danke nochmal! :) – Jonilo5

+0

Kein Problem, Kumpel! Vielleicht hast du in ein paar Tagen 15 Ruf (2 mehr)! Arbeite dafür! –

+0

Danke mein Freund! :) – Jonilo5

Verwandte Themen