0

我有一家独特的商店,有些产品会产生基本费用,比如说

摄影师第一个小时收费 20 美元,之后收费 1 美元。

我将一个变量传递到我的 codeignighter 购物车中;所以 5 个小时我会将变量传递给 cart->insert();

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

我对购物车类进行了一些更改,所以这可以工作并且到目前为止一直很好,我现在需要并且似乎无法弄清楚的是,当有选项它认为它是不同的产品并且每个 rowid 收取一次费用时。

无论各种选项如何,我都希望我的班级只允许对该项目收取 1 次费用。

下面是我在 Cart 类中创建的三个函数,我调用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 循环现在看起来像;我可以删除我之前的三个功能。

    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 回答