我对Codeigniter购物车有疑问。我已经创建了代码并对其进行了检查,但每次添加相同的产品时,它只会更新产品的所有信息,但不会添加新的产品。例如两件精确的衬衫,但尺寸或颜色不同。我在这里搜索了一个解决方案但尚未提出解决方案。
我的控制器代码
public function addToCart() {
$data = $this->input->post();
$id = $data['id'];
$qty = $data['qty'];
$color = $data['color'];
$cart = $this->cart->contents();
$exists = false;
$rowid = '';
foreach($cart as $item):
if($item['id'] == $id && $item['color'] == $color):
$exists = true;
$rowid = $item['rowid'];
$qty = $item['qty'] + $qty;
else:
// if statement does not equal
endif;
endforeach;
if($exists):
$this->product_model->update_cart_item($rowid, $qty);
redirect('dashboard');
else:
$this->product_model->add_cart_item();
redirect('dashboard');
endif;
}
我的型号代码
public function update_cart_item($rowid, $qty){
$data = array(
'rowid' => $rowid,
'qty' => $qty
);
$this->cart->update($data);
}
public function add_cart_item(){
$id = $this->input->post('id');
$name = $this->input->post('name');
$qty = $this->input->post('qty');
$price = $this->input->post('price');
$color = $this->input->post('color');
$photo = $this->input->post('photo');
$type = $this->input->post('type');
$data = array(
'id' => $id,
'qty' => $qty,
'price' => $price,
'name' => $name,
'color' => $color,
'photo' => $photo,
'type' => $type
);
$this->cart->insert($data);
}
现有产品的更新部分工作正常。没有的部分是它的相同产品,但不同的颜色。
答案 0 :(得分:0)
由于您希望对每个产品处理一些操作,请尝试使用:
public function addToCart() {
$data = $this->input->post();
foreach($cart as $item):
$id = $data['id'];
$qty = $data['qty'];
$color = $data['color'];
$cart = $this->cart->contents();
$exists = false;
$rowid = '';
if($item['id'] == $id && $item['color'] == $color):
$exists = true;
$rowid = $item['rowid'];
$qty = $item['qty'] + $qty;
if($exists):
$this->product_model->update_cart_item($rowid, $qty);
else:
$this->product_model->add_cart_item();
endif;
else:
// if statement does not equal
endif;
endforeach;
redirect('dashboard');
}
在检查下一个产品之前,您希望将$exists
设置为false。
毕竟,当循环中的所有内容完成后,您只需要重定向到仪表板。希望它能起作用。