0

一部の商品に基本料金が発生するユニークなショップがあるとしましょう。

カメラマンは最初の 1 時間は 20 ドル、その後は 1 ドルを請求します。

codeignighter カートに変数を渡しています。したがって、5 時間は変数を cart->insert(); に渡します。

$item['id'] = 1;
$item['qty'] = 5;
$item['base'] = 20.00;

カートクラスにいくつかの変更を加えたので、これは機能し、これまでのところ問題ありません。現在必要であり、これを理解できないように見えるのは、それを別の製品と見なすオプションがあり、この料金が行 ID ごとに 1 回請求される場合です。

さまざまなオプションに関係なく、クラスでアイテムの請求を 1 回だけ許可したいと思います。

以下は、Cart クラス内で作成した 3 つの関数set_base($item)で、_save_cart() 関数を呼び出します。

private function set_base($item)
{

    if( $this->base_exist($item) )
    {
        return FALSE;
    }

    // Only allow the base cost for 1 row id, it doesnt matter which one, just one
    $this->_base_indexes['rowid'][$item['id']] = $item['rowid'];
    $this->_cart_contents['cart_total'] += $item['base'];

    return TRUE;

}

private function base_exist($item)
{
    if ( array_key_exists($item['id'] , $this->_base_indexes['applied']) ) 
    {

        if ( ( $item['rowid'] == $this->_base_indexes['applied'][$item['id']] ) )
        {
            return TRUE;
        }
    }

    return FALSE;
}
private function base_reset()
{

    $this->_base_indexes = array();
    $this->_base_indexes['applied'] = array();

    return $this->_base_indexes;

}

内部 _save_cart(); 電話する

$this->base_reset();

cart_contents() ループ内に追加しました。

        if(isset($val['base'])) 
        {
            $this->set_base($val);
        }

        $this->_cart_contents['cart_total'] += ($val['price'] * $val['qty']);

これが明確だったことを願っています:/

4

1 に答える 1

0

少し変更しました。save_cart 関数の foreach ループは次のようになりました。以前持っていた 3 つの機能を削除できます。

    foreach ($this->_cart_contents as $key => $val)
    {
        // We make sure the array contains the proper indexes
        if ( ! is_array($val) OR ! isset($val['price']) OR ! isset($val['qty']))
        {
            continue;
        }

        if(isset($val['base'])) 
        {
            //If it doesnt exist, add the fee
            if (!(isset($this->_base_indexes[$val['id']]) == $val['rowid']) ) 
            {
                $this->_base_indexes[$val['id']] = $val['rowid'];
                $this->_cart_contents['cart_total'] += $val['base'];
                $sub = ($this->_cart_contents[$key]['price'] * $this->_cart_contents[$key]['qty']) + $val['base'];
            }
            else
            {
                //$this->_cart_contents[$key]['base'] = 0;
                $sub = ($this->_cart_contents[$key]['price'] * $this->_cart_contents[$key]['qty']);
            }

        }


        $this->_cart_contents['cart_total'] += ($val['price'] * $val['qty']);
        $this->_cart_contents['total_items'] += $val['qty'];
        $this->_cart_contents[$key]['subtotal'] = $sub;
    }
于 2013-07-16T05:24:36.083 に答える