一部の商品に基本料金が発生するユニークなショップがあるとしましょう。
カメラマンは最初の 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']);
これが明確だったことを願っています:/