[英]How to add instruction with product in Cart
This is a fully working Cart.这是一个功能齐全的购物车。 It can add products and calculate the quantity and total price.它可以添加产品并计算数量和总价。 but I want to take instructions from User and add it with the Products in Cart.但我想从用户那里获取说明并将其添加到购物车中的产品中。
This is the body from where I am adding product to 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>
This is the Controller:这是控制器:
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('/');
}
This is the Cart Modal:这是购物车模式:
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;
}
First save the instruction in a variable inside the controller function:首先将指令保存在控制器函数内的变量中:
$instructions = $request->input('instructions');
Now send it to the Cart Modal:现在将其发送到购物车模态:
$cart->add($products, $products->id, $instructions);
Controller function would be like this:控制器功能是这样的:
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('/');
}
Now in the Modal get the $instruction variable and save it in the Cart:现在在 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;
}
Note: Only one instruction will be saved with product array.注意:只有一条指令将与产品阵列一起保存。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.