我正在尝试在Codeingiter Cart中添加负价但不能。
$coupon = array(
'id' => $result->id,
'name' => $result->name,
'qty' => '1',
'price' => $result->discount,
'options' => array(
'info' => 'coupon',
'qty_description' => '')
);
$this->cart->insert($coupon);
其中$result->discount
取自数据库且为十进制数-20
。
当我使用此代码时,我会在购物车中获取该项目,但它会将其转换为(+)20而不是-20。 有什么理由和帮助吗?
答案 0 :(得分:2)
你应该只在之后添加一个 - 符号。在这个功能
preg_replace('/([^0-9\.])/i', '', $items['price'])
购物车库中的存在于system / libraries / Cart.php第194行: 添加后它将看起来像
preg_replace('/([^0-9\.-])/i', '', $items['price'])
答案 1 :(得分:1)
检查system / libraries / Cart.php第194行中的购物车库:
// Prep the price. Remove anything that isn't a number or decimal point.
$items['price'] = trim(preg_replace('/([^0-9\.])/i', '', $items['price']));
// Trim any leading zeros
$items['price'] = trim(preg_replace('/(^[0]+)/i', '', $items['price']));
// Is the price a valid number?
if ( ! is_numeric($items['price']))
{
log_message('error', 'An invalid price was submitted for product ID: '.$items['id']);
return FALSE;
}
所以基本上codeigniter只接受正值,你可以更改这些行但升级时要小心,或者你可以扩展库类并添加另一个自定义键。