[英]How to add instruction with product in Cart
這是一個功能齊全的購物車。 它可以添加產品並計算數量和總價。 但我想從用戶那里獲取說明並將其添加到購物車中的產品中。
這是我將產品添加到購物車的主體。
<form action="{{ route('product.addToCart') }}">
@csrf
<input hidden name="products_id" id="products_id"> // It contains the product id
<input name="instructions" id="instructions"> // Section from where I need to send instructions with each product
<button type="submit" class="btn theme-btn">Add to cart</button>
</form>
這是控制器:
public function getAddToCart(Request $request)
{
$products = Products::find($request->products_id);
$instructions = $request->input('instructions');
$oldCart = Session::has('cart') ? Session::get('cart') : null;
$cart = new Cart($oldCart);
$cart->add($products, $products->id, $instructions); // It is sending Product and it's Id in Cart Model
$request->session()->put('cart', $cart);
$oldCart = Session::get('cart');
$cart = new Cart($oldCart);
return redirect('/');
}
這是購物車模式:
public function add($item, $id, $instructions) {
$storedItem = ['qty' => 0, 'price' => $item->price, 'instructions' => $instructions, 'item' => $item];
if ($this->items) {
if (array_key_exists($id, $this->items)) {
$storedItem = $this->items[$id];
}
}
$storedItem['qty']++;
$storedItem['price'] = $item->price * $storedItem['qty'];
$storedItem['instructions'];
$this->items[$id] = $storedItem;
$this->totalQty++;
$this->totalPrice += $item->price;
}
首先將指令保存在控制器函數內的變量中:
$instructions = $request->input('instructions');
現在將其發送到購物車模態:
$cart->add($products, $products->id, $instructions);
控制器功能是這樣的:
public function getAddToCart(Request $request)
{
$products = Products::find($request->products_id);
$instructions = $request->input('instructions');
$oldCart = Session::has('cart') ? Session::get('cart') : null;
$cart = new Cart($oldCart);
$cart->add($products, $products->id, $instructions);
$request->session()->put('cart', $cart);
$oldCart = Session::get('cart');
$cart = new Cart($oldCart);
return redirect('/');
}
現在在 Modal 中獲取 $instruction 變量並將其保存在購物車中:
public function add($item, $id, $instructions) {
$storedItem = ['qty' => 0, 'price' => $item->price, 'instructions' => $instructions, 'item' => $item];
if ($this->items) {
if (array_key_exists($id, $this->items)) {
$storedItem = $this->items[$id];
}
}
$storedItem['qty']++;
$storedItem['price'] = $item->price * $storedItem['qty'];
$storedItem['instructions'] = $instructions;
$this->items[$id] = $storedItem;
$this->totalQty++;
$this->totalPrice += $item->price;
}
注意:只有一條指令將與產品陣列一起保存。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.