Magento在下订单后将客户与订单关联
我的自定义模块在事件后观察Magento在下订单后将客户与订单关联,magento,Magento,我的自定义模块在事件后观察sales\u order\u place\u,并通过为订单设置customerId来创建客户并将客户与订单关联 什么有效? 下单 创建客户 将在订单数据库中更新客户ID 什么不起作用? 另一个脚本会立即将customerId设置回NULL 在我的观察者完成运行后,我如何找出是什么脚本将customerId再次更新为NULL。您应该将事件更改为销售\型号\服务\报价\提交\成功 示例代码(Magento 2版本):events.xml <event nam
sales\u order\u place\u,并通过为订单设置customerId
来创建客户并将客户与订单关联
什么有效?
- 下单
- 创建客户
- 将在订单数据库中更新
客户ID
什么不起作用?
- 另一个脚本会立即将
customerId
设置回NULL
在我的观察者完成运行后,我如何找出是什么脚本将customerId
再次更新为NULL
。您应该将事件更改为销售\型号\服务\报价\提交\成功
示例代码(Magento 2版本):events.xml
<event name="sales_model_service_quote_submit_success">
<observer name="quote_submit_success_observer" instance="Namespace\ModuleName\Observer\GenerateObserver" />
</event>
我也有同样的问题-我的假设是,对订单调用save
方法会触发sales\u order\u save\u在事件之前/之后监听的内容,其中之一是将客户ID设置回null
。我通过只保存我想要的属性来解决这个问题,而不是触发整个订单的保存:
$order
->setCustomerId($customer->getId())
->setCustomerIsGuest(0)
->setCustomerGroupId($customer->getGroupId());
$order->getResource()
->saveAttribute($order, 'customer_id' )
->saveAttribute($order, 'customer_is_guest')
->saveAttribute($order, 'customer_group_id');
这使我能够使用销售\模型\服务\报价\提交\成功
事件将客户与Magento EE 1.14.3.10中的订单成功关联。您好,您是否已将客户设置为来宾0@faizanbeg我从一个独立的文件中测试了我的代码,它可以正常工作。仅当从事件执行时,它将再次覆盖customerId
为NULL
。设置customerId
的脚本是:$order->setCustomerId($customer->getId())->setCustomerIsGuest(0)->setCustomerGroupId(1)代码>。您将在magento.stackexchange.com获得更好的响应。但是,如果没有其他缓存/明显问题,magento在排序处理步骤中使用有限状态机。也可能有帮助。在IDE中设置断点,以便在代码执行时逐步完成代码可能会有所帮助。@DutA。这是不可能的,因为我知道目前没有一个PHP编辑器能够像Magento这样使用框架。无论如何都尝试了该事件,但结果与以前相同。您可能知道Magento 1.9的其他解决方案吗?我仍然可以奖励赏金作为奖励。我没有本地代码M1.9的示例。我无法继续。您是否尝试使用默认Magento?默认Magento是什么意思?我在我的开发安装中尝试了这一点。您的回答很有道理,因为save()
函数是唯一可能使客户改变的原因。我要试试!
$order
->setCustomerId($customer->getId())
->setCustomerIsGuest(0)
->setCustomerGroupId($customer->getGroupId());
$order->getResource()
->saveAttribute($order, 'customer_id' )
->saveAttribute($order, 'customer_is_guest')
->saveAttribute($order, 'customer_group_id');