Codeigniter推车类基本费

时间:2013-07-16 04:21:03

标签: php codeigniter

我有一个独特的商店,其中一些产品需要支付基本费用,比如说

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

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

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

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

我希望我的课程只允许1项费用,无论各种选项如何。

以下是我在Cart类中创建的三个函数 我在_save_cart()函数中调用set_base($item)

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']);

希望这很清楚:/

1 个答案:

答案 0 :(得分: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;
    }