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

Shopware 6订单导出配置:如何获取支付方式及配送地址国别?

Shopware 6 订单导出关联字段缺失及地址翻译问题解决方法

一、交易与支付方式字段为空/无提示问题

你之前修改的CategoryCriteriaSubscriber.php是分类导入导出的专属订阅器,和订单导出完全无关,这就是修改无效的原因。正确的操作如下:

  1. 找到订单导出对应的订阅器文件:vendor/shopware/core/Content/ImportExport/Event/Subscriber/OrderCriteriaSubscriber.php
  2. 在该文件的prepareCriteria方法中,添加交易及支付方式的关联代码:
    // 添加交易与支付方式的关联
    $criteria->addAssociation('transactions.paymentMethod');
    // 如果需要支付方式的多语言名称,追加以下代码
    $criteria->addAssociation('transactions.paymentMethod.translations');
    
  3. 执行缓存清除命令后重新测试导出,此时transactions.paymentMethod字段会正常获取值,导出配置的字段提示也会出现transactions相关选项。

二、配送地址国别翻译无法获取问题

账单地址的关联默认已配置,但配送地址的国别关联需要手动添加,同样在OrderCriteriaSubscriber.php的prepareCriteria方法中补充:

// 添加配送地址及国别翻译的关联
$criteria->addAssociation('deliveries.shippingOrderAddress.country');
$criteria->addAssociation('deliveries.shippingOrderAddress.country.translations');

导出时使用类似deliveries.shippingOrderAddress.country.translations.zh-CN.name的字段路径,即可获取对应语言的配送地址国别名称。

最佳实践:避免修改核心文件

直接修改vendor目录下的核心文件会在版本更新时被覆盖,建议通过自定义插件实现无侵入式扩展:

  1. 创建自定义插件,注册ImportExportBeforeImportExportEvent事件订阅器
  2. 在订阅器中判断当前导出实体为订单时,动态添加所需关联:
    use Shopware\Core\Content\ImportExport\Event\ImportExportBeforeImportExportEvent;
    use Shopware\Core\Content\Order\OrderDefinition;
    use Symfony\Component\EventDispatcher\EventSubscriberInterface;
    
    class OrderExportCriteriaSubscriber implements EventSubscriberInterface
    {
        public static function getSubscribedEvents(): array
        {
            return [
                ImportExportBeforeImportExportEvent::class => 'onBeforeImportExport',
            ];
        }
    
        public function onBeforeImportExport(ImportExportBeforeImportExportEvent $event): void
        {
            $definition = $event->getDefinition();
            if ($definition->getEntityName() !== OrderDefinition::ENTITY_NAME) {
                return;
            }
    
            $criteria = $event->getCriteria();
            $criteria->addAssociation('transactions.paymentMethod.translations');
            $criteria->addAssociation('deliveries.shippingOrderAddress.country.translations');
        }
    }
    
  3. 注册订阅器后,安装插件并清除缓存即可生效。

内容的提问来源于stack exchange,提问作者RobinW

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 21:53:21