我有一个独特的商店,其中一些产品需要支付基本费用,比如说
摄影师第一个小时收费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']);
希望这很清楚:/
答案 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;
}