You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 12:43:29