我的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);
}
现有产品的更新部分工作正常。例如,不相同的部分是其相同的产品但颜色不同。
由于您要对每个产品进行处理,因此请尝试以下操作:
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。毕竟,完成所有循环后,您只需要重定向到仪表板即可。希望它能工作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句