Shopware 6:Flow Builder特定触发器下邮件模板变量异常
Shopware 6.4.9.0 Flow Builder邮件模板变量缺失问题排查
问题根源分析
- 触发器上下文数据差异:
checkout.order.placed触发时,订单处于创建完成状态,Shopware核心会完整加载订单关联的currency、addresses等关联实体并传入模板上下文;而checkout.order.payment_method.changed触发器默认仅加载订单基础字段,未预加载这些关联数据,导致模板中对应变量为null。 - 版本特性问题:Shopware 6.4.9.0属于6.4.x早期稳定版,确实存在部分Flow触发器上下文数据不完整的已知问题,后续版本(如6.4.10及以上)修复了这类关联数据预加载的逻辑。
排查步骤
验证是否为核心bug
- 搭建一个无任何第三方插件的干净Shopware 6.4.9.0环境,复现你的场景:用
checkout.order.payment_method.changed触发器搭配订单确认邮件模板。 - 如果同样出现
currency和addresses为null的情况,即可确定是Shopware核心版本的bug。
- 搭建一个无任何第三方插件的干净Shopware 6.4.9.0环境,复现你的场景:用
排查插件冲突
- 若干净环境下问题消失,说明是第三方插件导致。逐个禁用已安装的插件,每次禁用后测试场景,定位到修改了Flow触发器上下文或订单数据传递逻辑的插件。
临时解决方案
如果暂时无法升级版本,可通过自定义插件补充触发器的上下文数据:
- 创建一个自定义插件,监听
checkout.order.payment_method.changed对应的Flow事件,在事件处理中手动预加载订单的currency和addresses关联数据,示例代码片段:
public function onPaymentMethodChanged(OrderPaymentMethodChangedEvent $event): void { $order = $event->getOrder(); // 预加载关联数据 $order->getCurrency(); $order->getAddresses(); }
内容的提问来源于stack exchange,提问作者Stepan
相关产品推荐
相关产品推荐

