【发布时间】:2017-05-03 15:00:12
【问题描述】:
您好,我在使用分页存储会话数组时遇到问题。我做网店,我有商店页面,我有一些东西要卖,在“购买”按钮上,我为数据库中的每个项目设置了 ID。而且我需要制作 1 个可以在分页上正常工作的数组,这样我就可以在“购物车”中使用这些 ID,这样用户就可以查看他实际购买的内容。这是我对出售物品的看法:
<?php foreach ($stock as $stocklist): ?>
<div class="col-sm-4">
<div class="prod_box">
<div class="product_title" value="<?php $stocklist->name ?>" > <?php echo $stocklist->name ?> </div>
<div class="prod_price" value="<?php $stocklist->price ?>"> <?php echo $stocklist->price ?> $ </div>
<div class="prod_buy">
<button type="submit" value="<?= $stocklist->id ?>" class="custombtn" method='post' title="Add to Cart" > Buy </button>
</div>
</div>
</div>
<?php endforeach; ?>
我还使用 JS (Ajax) 将购买的每件商品发送到控制器,并将每个 ID 放入数组中:
<script type="text/javascript">
$(document).ready(function () {
var IDs = [];
$('.custombtn').click(function () {
var id = $(this).attr("value");
IDs.push(id);
$.ajax({
type: 'POST',
url: '<?php echo Url::to(['stock/shop']); ?>',
data: {IDs},
dataType: 'json'
});
console.log(IDs);
});
});
</script>
在控制器中我有:
public function actionShop() {
Yii::$app->session->open();
$session = Yii::$app->session;
$query = Stock::find();
$pagination = new Pagination([
'defaultPageSize' => 6,
'totalCount' => $query->count(),
]);
$stock = $query->orderBy('id')
->offset($pagination->offset)
->limit($pagination->limit)
->all();
if (Yii::$app->request->post()) {
$session = Yii::$app->session;
$data = Yii::$app->request->post();
$session['lastIDs'] = $data;
}
return $this->render('shop', [
'stock' => $stock,
'pagination' => $pagination,
]);
}
所以:
$session['lastIDs'] = $data;
我在会话中保存了所有 ID,但是当我使用分页切换页面并单击更多东西来购买物品时,ID 被覆盖。我还尝试制作 2 个会话变量并合并数组,但随后它保存了所有 API 调用,因此我购买了 20 个“项目”的 20 个数组,每个数组都有最后一次单击的 +1 ID,而不仅仅是 1 个数组购买的 ID。
【问题讨论】:
标签: jquery arrays session pagination yii2