产品未添加到Codeigniter购物车

时间:2015-02-21 06:01:34

标签: php codeigniter shopping-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); 
}

现有产品的更新部分工作正常。没有的部分是它的相同产品,但不同的颜色。

1 个答案:

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