在我的Magento 2商店中,我有一个观察者,在给定一些条件下,应该将订单状态更新为“完成”。
<?php
namespace MyNameSpace\Observer;
use Magento\Framework\Event\Observer;
use Magento\Framework\Event\ObserverInterface;
use Magento\Sales\Model\Order;
class SalesOrderShipmentTrackSaveAfter implements ObserverInterface
{
public function __construct(
) {
}
public function execute(Observer $observer)
{
...
$order->setState(Order::STATE_COMPLETE);
$order->setStatus(Order::STATE_COMPLETE);
$order->addStatusToHistory(Order::STATE_COMPLETE);
$order->save();
...
}
}
字符串
观察者在预期的时间被调用,并且$order->save()
是以正确的顺序被调用的(我已经使用调试器进行了检查),但是在代码执行之后,顺序被保存为closed
,而不是completed
。
查看magento/vendor/magento/module-sales/Model/Order.php
,可以看到const STATE_COMPLETE = 'complete';
这种行为有什么原因吗?Magento版本是2.3.1
1条答案
按热度按时间krcsximq1#
我以前遇到过这个问题,并在这里找到了解决方案:https://magento.stackexchange.com/a/283449/111506
希望对你有帮助!