Shopware 6:如何重建订单上下文以触发发货确认邮件?
控制台订单发货任务的上下文构建疑问
背景说明
正在开发一个控制台任务,功能是基于导入的XML文件处理订单发货。原本以为执行发货操作后未收到确认邮件是因为使用了默认上下文,后续确认该问题是单元测试本身不触发邮件发送,不在本次问询范围内。
当前代码实现
上下文创建
$context = Context::createDefaultContext();
发货操作逻辑
$this->deliveryRepository->update([ [ 'id' => $deliveryId, 'trackingCodes' => [$trackingCode] ] ], $context); $context->addExtension( MailSendSubscriber::MAIL_CONFIG_EXTENSION, new MailSendSubscriberConfig(false) ); $this->orderService->orderDeliveryStateTransition( $deliveryId, 'ship', new ParameterBag(), $context );
核心问题
- 是否应该基于订单所属的店铺前端重建上下文?
- 若需要重建,正确的实现方式是什么?比如使用标记为
@internal的\Shopware\Core\System\SalesChannel\Context\BaseContextFactory::create是否可行? - 使用默认上下文本身是否存在问题?
已尝试的操作
曾尝试通过以下代码创建上下文,后续确认邮件未收到是单元测试特性,与上下文无关:
$context = $this->baseContextFactory->create($order->getSalesChannelId())->getContext();
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

