[英]Add and update products to session cart in Laravel
我正在為在拉雷維爾(Laravel)參加會議的客人建立購物車。 我可以將一種帶有數量的產品添加到會話變量“購物車”中。 但是,當我再次添加相同的產品時,由於無法在陣列中搜索相同的產品ID,所以無法增加數量。
控制者
public function addToSessionCart(Request $request, $id)
{
if (session()->has('cart')) {
$oldCart = session()->get('cart');
$cartdata = $oldCart;
if (array_key_exists('product_id', $cartdata)) {
if (in_array($id, $cartdata['product_id'], true)) {
$cartdata['quantity'] += 1;
} else {
$cartdata['product_id'] = $id;
$cartdata['quantity'] = 1;
}
}
} else {
$cartdata = [];
$cartdata['product_id'] = $id;
$cartdata['quantity'] = 1;
}
session()->put('cart', $cartdata);
session()->flash('message', 'Item added to cart !');
return back();
}
我正在從AppServiceProvider將數據傳遞到購物車:
view()->composer('*', function ($view) {
if (Auth::check()) {
$cart_items = Cart::where('user_id', Auth::user()->id)->with('product')->get();
$cart_items_count = Cart::where('user_id', Auth::user()->id)->count();
$menus = Menu::where('status', '1')->orderBy('order', 'ASC')->get();
$view->with(['cart_items' => $cart_items, 'cart_items_count' => $cart_items_count, 'menus' => $menus]);
} else {
$cart_items = null;
$session_cart_items = null;
if (\Session::get('cart')) {
$session_cart_items = [];
foreach (session('cart') as $session_cart_items[]) {
$session_cart_items['product'] = Product::where('id', session('cart.product_id'))->get();
$session_cart_items['quantity'] = session('cart.quantity');
}
}
$cart_items_count = count(\Session::get('cart'));
$menus = Menu::where('status', '1')->orderBy('order', 'ASC')->get();
$view->with([
'cart_items' => $cart_items, 'cart_items_count' => $cart_items_count, 'menus' => $menus,
'session_cart_items' => $session_cart_items,
]);
}
});
視圖
@foreach($session_cart_items['product'] as $key => $name)
<div class="product-cart">
<div class="product-image">
<img src="/frontend/assets/images/{{ $name->image }}" alt="image">
</div>
<div class="product-content">
<h3><a href="/product/{{$name->id}}/{{$name->slug}}">{{$name->name}}</a></h3>
<div class="product-price">
<span>{{ $session_cart_items['quantity'] }}</span>
<span>x</span>
₹ <span class="price">{{ $name->price }}</span>
</div>
</div>
</div>
@php
$total += ($name->price * $session_cart_items['quantity']);
@endphp
@endforeach
當同一產品添加到購物車時,我希望數量增加。 如果不是,則向會話數組添加新的產品ID和數量
此行需要更改:
foreach (session('cart') as $session_cart_items[]) {
您無法使用[]
進行閱讀。
foreach (session('cart') as $session_cart_items) {
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.