1

我正在处理一个问题,如果购物车数量 > 500,我需要更改承运人,所以,我正在挂钩 actionCartSave 并检查金额,但是,当我这样做时

$cart->id_carrier=(int)$carrier_id;
$cart->update();

ajax 停止响应,需要重新加载页面以查看是否已将产品添加到购物车,但如果我删除了$cart->update(),则运营商不会更新。我该如何解决这个问题?

4

1 回答 1

1

也许你正在陷入一个循环。当你打电话时update,钩子actionCartSave会再次被调用。
如果购物车承运人与您的结果相同,您需要做的是避免更新购物车

if ((int)$cart->id_carrier !== (int)$carrier_id) {
    $cart->id_carrier = (int)$carrier_id;
    $cart->update();
}

这样,您将避免无限循环
另一个(更好的)解决方案是使用$cart->save();,因为它不调用actionCartSave

于 2018-01-05T23:17:34.980 回答