我有一家独特的商店,有些产品会产生基本费用,比如说
摄影师第一个小时收费 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']);
希望这很清楚:/