如何解决如何在购物车中添加产品说明
这是一个完全可用的购物车。它可以添加产品并计算数量和总价。但是我想听用户的指示,并将其与购物车中的产品一起添加。
这是我要向购物车中添加产品的主体。
<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,$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;
}
注意:乘积数组只会保存一条指令。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。