我正在使用购物车类的codeigniter,并且当我更新购物车上的数量时,它没有更新正确的数字,而是它比我得到的更新更多。例如,如果我的总项目为5,而我将其更新为6,则表明超过6,可能是8或10或更多。
忽略代码专家中计算的点以及注释行。只是数量更新错误
代码如下:
<tbody>
<?php $i = 1;
$point = 0;
?>
<?php foreach ($this->cart->contents() as $items):
$point += $items['qty'] * $items['options']['item_point'];
?>
<?php echo form_hidden('product_id', $items['id']); ?>
<tr <?php if ($i & 1) {
echo 'class="alt"';
} ?>>
<td class="col-sm-8 col-md-6">
<div class="media">
<a class="thumbnail pull-left" href="#">
<img class="media-object" src="<?php echo $items['img']; ?>"
style="width: 72px; height: 72px;padding-left: 2px;"> </a>
<div class="media-body" style="padding-left: 13px;padding-top: 9px;">
<h4 class="media-heading"><a href="#"><?php echo $items['options']['product_name']; ?></a></h4>
</div>
</div>
</td>
<td class="col-sm-1 col-md-1" style="text-align: center">
<input type="number" name="quantity" min="0" max="10" value="<?php echo $items['qty'] ?>" size='5'
maxlength='3' class="form-control">
</td>
<td class="col-sm-1 col-md-1 text-center">
<strong><?php echo $items['qty'] * $items['options']['item_point']; ?></strong></td>
<td class="col-sm-1 col-md-1 text-center"><strong><?php echo $this->cart->format_number($items['price']); ?>
Ks</strong></td>
<td class="col-sm-1 col-md-1 text-center"><strong><?php echo $this->cart->format_number($items['subtotal']); ?>
Ks</strong></td>
</tr>
<?php $i++; ?>
<?php endforeach; ?>
</tbody>
<tfoot>
<tr>
<td><h4>Total</h4></td>
<td></td>
<td class="text-center"><h3><?php echo $point; ?></h3></td>
<!-- <td><h5>Subtotal<br>Estimated shipping</h5><h3>Total</h3></td>
<td class="text-right"><h5><strong>$24.59<br>$6.94</strong></h5><h3>$31.53</h3></td> -->
<td></td>
<td class="text-right"><h3><?php echo $this->cart->format_number($this->cart->total()); ?> Ks</h3></td>
</tr>
<tr>
<td></td>
<td></td>
<td>
<div class="btn btn-default">
<span class="glyphicon glyphicon-shopping-cart"></span> <?php echo anchor('front/home/empty_cart', 'Empty Cart', 'class="empty"'); ?>
</div>
</td>
<td>
<button type="submit" class="btn btn-primary">
<span class="glyphicon glyphicon-shopping-cart"></span> Update your Cart
</button>
</td>
<td>
<div class="btn btn-success">
<a href="<?php echo base_url(); ?>front/payment" title="Checkout" style="color: #FFFFFF">Checkout</a>
<span class="glyphicon glyphicon-play"></span>
</div>
</td>
</tr>
</tfoot>
</table>
<?php
echo form_close();
这是模特
function validate_update_cart()
{
// Get the total number of items in cart
$total = $this->cart->total_items();
// Retrieve s posted information
$item = $this->input->post('item_id');
$qty = $this->input->post('quantity');
// Cycle true all items and update them
for ($i = 0; $i < $total; $i++) {
//Create an array with the products rowid's and quantities.
$data = array(
'id' => $item[$i],
'qty' => $qty[$i]
);
//Update the cart with the new information
$this->cart->update($data);
}
echo "<pre>";
print_r($data);
echo "</pre>";
exit;
// $data = array('item_id'=>$item,'qty'=>$qty);
// $this->cart->update($data);
}
这是控制器
function update_cart(){
$this->Home_model->validate_update_cart();
redirect($_SERVER['HTTP_REFERER']);
}
答案 0 :(得分:0)
首先,不建议使用该库,仅出于向后兼容的目的保留该库。但是我会帮助你的。
获取错误数据的原因是,在视图内部您没有使用row_id值,该值在更新时用作参考,请将您的输入与文档中的输入进行比较,我敢肯定这可以容易修复:
<?php echo form_hidden($i.'[rowid]', $items['rowid']); ?>
<?php echo form_hidden('product_id', $items['id']); ?>
仔细观察一下,您还会生成单个form_hidden值,而不是数组,因此在文档内有很明显的一行:
<?php echo form_hidden($i.'[rowid]', $items['rowid']); ?>
当代码产生以一个结果结尾的输入时-product_id
<?php echo form_hidden('product_id', $items['id']); ?>
然后在更新方法中,您通过$ this-> cart-> contents()进行迭代,并使用每种产品或一种产品的row_id和数量,您会很好。