2017-06-04 2 views
0

Ich versuche, einen Artikel aus einem Einkaufswagen mit Crinsane Larvel Shopping Cart zu bekommen. Die Dokumentation spricht über die Verwendung einer Schließung. Ich verstehe das angegebene Beispiel nicht.Suche nach Artikeln im Warenkorb mit Laravel Crinsane Einkaufswagen

Ich benutze Laravel 5.3, suche Artikel aus dem Einkaufswagen mit Informationen aus dem Request-Objekt. Dies ist mein Code:

Ansicht

@foreach($cart as $item) 
<td> 
    <div> 
     <a href='{{url("cart?id=$item->id&add=1")}}'> + </a> 
     <input type="text" name="qty" value="{{$item->qty}}" autocomplete="off" size="2"> 
     <a href='{{url("cart?id=$item->id&minus=1")}}'> - </a> 
    </div> 
</td> 
@endforeach 

Strecke

Route::get('/cart', '[email protected]'); 

-Controller

public function getCart(){ 

    //increment the quantity 
    if (Request::get('id') && (Request::get('add')) == 1) { 

     $inputItem = Request::get('id'); 
     //$rowId = Cart::search(['id' => Request::get('id')]); 
     $cartItem = Cart::get($rowId); 
     Cart::update($rowId, $cartItem->qty+1); 
    } 

    //decrease the quantity 
    if (Request::get('id') && (Request::get('minus')) == 1) { 

     $inputItem = Request::get('id'); 
     //$rowId = Cart::search(['id' => Request::get('id')]); 
     $cartItem = Cart::get($rowId); 
     Cart::update($rowId, $cartItem->qty-1); 
    } 

} 

Warenkorb Content Collection

`Collection {#318 ▼ 
    #items: array:2 [▼ 
    "027c91341fd5cf4d2579b49c4b6a90da" => CartItem {#319 ▼ 
     +rowId: "027c91341fd5cf4d2579b49c4b6a90da" 
     +id: "1" 
     +qty: 1 
     +name: "Banana" 
     +price: 35.0 
     +options: CartItemOptions {#320 ▼ 
     #items: [] 
     } 
     -associatedModel: null 
     -taxRate: 21 
    } 
    "370d08585360f5c568b18d1f2e4ca1df" => CartItem {#321 ▼ 
     +rowId: "370d08585360f5c568b18d1f2e4ca1df" 
     +id: "2" 
     +qty: 7 
     +name: "Melon" 
     +price: 64.0 
     +options: CartItemOptions {#322 ▼ 
     #items: [] 
     } 
     -associatedModel: null 
     -taxRate: 21 
    } 
    ] 
}` 

Wie kann ich Cart::search() verwenden, um den Warenkorb Artikel mit ID 1 (Banane) zu finden?

Antwort

1

Sie können es wie folgt aus:

Cart::search(function($cartItem, $rowId) { 
    return $cartItem->id == 1; 
}); 

Die search Methode ist ein Wrapper für Laravel des filter method on collections.

Eine Closure ist einfach eine Funktion, die an eine Funktion übergeben wird, die möglicherweise Variablen als Argumente von der übergeordneten Funktion empfängt.

Wenn Sie die $request Variable innerhalb dieser Schließung verwenden möchten, müssen Sie zu use() es haben:

Cart::search(function($cartItem, rowId) use($request) { 
    return $cartItem->id == $request->id; 
}); 

Natürlich darauf achten, dass $request->has('id'), bevor Sie diese Eigenschaft zuzugreifen versuchen.

+0

Vielen Dank. Es klappt ... – DBoonz

Verwandte Themen