1

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」を取得して、それを削除機能に使用できるようにするにはどうすればよいですか?

どうもありがとう!

4

2 に答える 2

1

私は同様の問題を抱えていました - CI_Cart ライブラリを 2 つの新しい関数 - 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 */
于 2012-10-22T16:18:58.463 に答える
0

ジョブ名またはチェックしたいものがすでに存在する場合は、モデルをチェックインできます。存在する場合は削除ボタンを表示し、そうでない場合は追加を表示します。

于 2012-10-22T16:09:51.470 に答える