我一直在摆弄 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 完成一些其他操作才能激活购物车?
我最好的猜测,这是一个猜测,因为我无法读懂原始开发人员的想法,他们会试图阻止 API 生成的报价出现在废弃的购物车报告中。
is_active 标志用于指示客户的有效报价,并且客户只能有一个有效报价。该标志还用于了解何时可以从系统中自动删除报价,其理论是,如果报价不活跃,则它已转换为订单并且不再需要。如果 Mage_Checkout Cart API 将该标志设置为 false,则报价可能会在您将其转换为订单之前进行自动清理。通过将该标志设置为 false,还会阻止您使用 API 创建客户可以在前端使用的实时报价。
所以,我想说,如果您使用 APIcreate您需要添加publish() 方法的客户报价。如果您使用 API 来modify客户的现有报价,您不会遇到问题,因为它仅在创建新报价时才会出现。
无论如何,我个人认为当前的行为是一个错误,因为清理例程使用该标志来指示可移动引号。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)