Codeigniter购物车 - 检查商品是否已添加到购物车

时间:2012-10-22 15:31:08

标签: codeigniter

我在Codeigniter中使用Cart类。我想要做的事情(希望!)应该很简单......但我正在努力。

在产品页面上,我有一个“添加到购物车”的按钮。我想要发生的是,当项目已经在购物车中时,按钮会变为“从购物车中移除”。

<? //if(**not in cart**) { ?>
    <a href="<?=base_url()?>jobs/addjob/<?=$row->id?>">Add to cart</a>
<? } else { ?>
    <a href="<?=base_url()?>jobs/removejob/<? /**cart 'rowid'**/ echo $rowid?>">Remove from cart</a>
<? } ?>

如何查询购物车以查看该商品是否存在并获取'rowid'以便我可以将其用于删除功能?

非常感谢!

2 个答案:

答案 0 :(得分:1)

我遇到了类似的问题 - 我通过扩展带有2个新函数的CI_Cart库 - in_cart()和all_item_count()来解决这个问题。

<?php
class MY_Cart extends CI_Cart {

    function __construct() 
        {
            parent::__construct();
            $this->product_name_rules = '\d\D';
        }

/*
 * Returns data for products in cart
 * 
 * @param integer $product_id used to fetch only the quantity of a specific product
 * @return array|integer $in_cart an array in the form (id => quantity, ....) OR quantity if $product_id is set
 */
public function in_cart($product_id = null) {
    if ($this->total_items() > 0)
    {
        $in_cart = array();
        // Fetch data for all products in cart
        foreach ($this->contents() AS $item)
        {
            $in_cart[$item['id']] = $item['qty'];
        }
        if ($product_id)
        {
            if (array_key_exists($product_id, $in_cart))
            {
                return $in_cart[$product_id];
            }
            return null;
        }
        else
        {
            return $in_cart;
        }
    }
    return null;    
}

public function all_item_count()
{
    $total = 0;

    if ($this->total_items() > 0)
    {
        foreach ($this->contents() AS $item)
        {
            $total = $item['qty'] + $total;
        }
    }

    return $total;
}
 }
 /* End of file: MY_Cart.php */
 /* Location: ./application/libraries/MY_Cart.php */

答案 1 :(得分:0)

您可以检查您的模型是否存在您要检查的工作名称或任何内容。如果存在,则显示删除按钮,否则显示添加。