2017-06-04 278 views
0

我試圖使用Crinsane Larvel Shopping Cart購物車中的商品。 文檔討論了使用閉包。我不明白所提供的例子。使用laravel crinsane購物車搜索購物車中的商品

我正在使用Laravel 5.3,試圖使用來自Request對象的信息從購物車中搜索項目。這是我的代碼:

查看

@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 

路線

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

控制器

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); 
    } 

} 

車的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 
    } 
    ] 
}` 

如何使用Cart::search()查找ID爲1(香蕉)的購物車物品?

回答

1

你可以做到這一點就像這樣:

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

search方法是Laravel的filter method on collections的包裝。

Closure是傳遞給一個函數的函數,它可能會或可能不會從父函數接收變量作爲參數。

如果你想用這個封閉的內部$request變量,你將不得不use()它:

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

當然確保$request->has('id')您嘗試訪問屬性之前。

+0

謝謝。有用 ... – DBoonz