【问题标题】:Codeigniter cart: special offers, custom prices regarding of cart content - how to approach?Codeigniter 购物车:特别优惠,关于购物车内容的自定义价格 - 如何处理?
【发布时间】:2012-12-08 10:37:40
【问题描述】:

我用购物车成功创建了简单的网络应用。

现在我需要实施一些特别优惠。

示例 1:如果客户添加了 2 件某种产品 - 第二件的成本应降低 30%。

示例 2:如果客户添加 product_1 和 product_2 - 那么我必须免费添加产品 3。

实现业务逻辑本身没有问题。

问题是,我在 Codeigniter 购物车中没有产品详细信息。

项目对象/数组中有idnameqtypricesubtotaloptions字段。

要在每次购物车更改时不查询数据库的情况下重新计算价格,我需要一些额外的字段,例如组/类别,它们告诉我该产品适用什么特别优惠。

另外 - 我需要将基本价格存储在某个地方,因为当客户从购物车中移除一些产品时 - 我需要将旧价格放在那里。

我应该把这些附加信息放在哪里?

options 字段已被使用...

我不想在每次购物车更新时都查询数据库(我希望我的 Web 应用程序非常快,并且我希望服务器负载最小)。

当我更改某些购物车商品的价格时,这些rowid 会出现问题吗?

我问这个问题,因为购物车唯一的“rowid”是项目 idoptions 数组的 md5 校验和。我的应用程序将对具有相同选项的相同产品使用不同的价格(例如一件正常价格,另一个 70% 的价格)。

【问题讨论】:

    标签: codeigniter cart


    【解决方案1】:

    Codeigniter 购物车可以帮助您入门,但对于任何类型的定制,我建议您自己制作购物车,这样会容易得多。请记住,购物车所要做的就是存储产品 ID 和数量。就是这样。其他一切都是为了查看购物车和创建订单。订单总额与购物车是分开的,因为对于大多数订单会有其他费用,如运费/税费。和/或可能会有改变最终价格的促销活动。

    因此,您可能决定将产品名称包含在购物车中以使其更易于显示。并且存储船舶重量是合理的。但即使将价格存储在购物车中也可能很危险。如果在购物者购物时涨价或降价怎么办?这些可能是边缘情况,但它向您展示了购物车中的信息有多“陈旧”。

    您引用的示例很棒,因为您很快就会看到 - 购物车是为一次跟踪一个订单项而构建的。对于任何类型的逻辑,例如 - 如果您购买其中 3 个,您将免费获得第三个 - 您可以将这种逻辑构建到购物车中 - 但它很快就会变成一团糟!

    那该怎么办?获取购物车对象 - 与您的购物车项目 - 并将其传递给促销模型。促销模型循环遍历购物车中的所有物品 - 然后进行调整 - 将其传递给您的订购方法。通过使用促销模型,我们将促销的业务规则与购物车分开。最重要的是

    我们不会更改购物车中的任何内容!

    我们正在将促销应用于购物车中的商品。更加灵活,并且很容易向人们展示他们节省了多少钱,因为您没有尝试重写原始购物车定价。

    【讨论】:

    • 非常有用的提示,关于在有人购物时更新价格。我从来没有考虑过这样的情况。谢谢。
    【解决方案2】:

    我意识到,options 可以是数组数组,我可以在那里存储任何其他数据。

    我会使用那个数组,我认为没有必要扩展标准的购物车库。

    【讨论】:

    • 这对我来说并不顺利,尤其是当我尝试更新购物车时。我想建立自己的是唯一更好的选择。或者只是扩展购物车类
    猜你喜欢
    • 2019-12-21
    • 2019-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-26
    • 1970-01-01
    相关资源
    最近更新 更多