未添加到Codeigniter购物车的产品


Products not adding to Codeigniter cart

我的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。毕竟,当循环中的所有内容都完成时,您只需要重定向到仪表板。希望它能起作用。