【问题标题】:Why does the Magento cart.create function make the cart inactive?为什么 Magento cart.create 函数会使购物车处于非活动状态?
【发布时间】:2011-08-01 14:24:17
【问题描述】:

我一直在摆弄 Magento 购物车 API (Magento v.1.5),发现在创建购物车(并添加产品)时,“sales_flat_quote”表中的“is_active”值设置为“0 ”。相比之下,如果你在商店界面使用“加入购物车”按钮,“is_active”的值会被设置为“1”。

我做了一些挖掘,发现 API 在 app/code/core/Mage/Checkout/Model/Cart/Api.php 中设置了“is_active”。

这是相关的代码块:

public function create($store = null)
{
    $storeId = $this->_getStoreId($store);

    try {
        /*@var $quote Mage_Sales_Model_Quote*/
        $quote = Mage::getModel('sales/quote');
        $quote->setStoreId($storeId)
            ->setIsActive(false)
            ->setIsMultiShipping(false)
            ->save();
    } catch (Mage_Core_Exception $e) {
        $this->_fault('create_quote_fault', $e->getMessage());
    }
    return (int) $quote->getId();
}

所以我不确定将其设为假的意图是什么。商店接口和 API 之间的行为差​​异是否有原因?或者是否必须通过 API 执行其他操作才能激活购物车?

【问题讨论】:

  • 如果您发布您正在使用的特定版本的 Magento 将会非常有帮助,因为版本之间的情况往往会发生很大变化。
  • 对不起,Magento v.1.5。我已将其添加到原始帖子中。

标签: magento


【解决方案1】:

我的最佳猜测,因为我无法理解最初的开发人员的想法,这是他们试图阻止 API 生成的报价出现在废弃的购物车报告中的猜测。

is_active 标志用于指示客户的有效报价,客户应该只有一个有效报价。该标志还用于了解何时可以从系统中自动删除报价,其理论是如果报价未激活,则它已转换为订单并且不再需要。如果 Mage_Checkout 购物车 API 将标志设置为 false,则报价会受到自动清理,可能在您将其转换为订单之前。通过将该标志设置为 false,它还会阻止您使用 API 创建客户可以在前端使用的实时报价。

所以,我想说,如果您使用 API 为客户创建报价,您需要添加一个 publish() 方法。如果您使用 API 来修改客户的现有报价,则不会遇到问题,因为它只会在创建新报价时出现。

无论如何,我个人认为当前行为是一个错误,因为清理例程使用该标志来指示可移动引号。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-24
    • 1970-01-01
    • 2018-03-01
    • 1970-01-01
    相关资源
    最近更新 更多