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

Shopware 6插件更新后配置值错误:旧配置键移除引发的迁移问题

解决Shopware 6插件评论配置迁移重复覆盖问题

针对你遇到的reviewModeration到autoPublishStars配置迁移时的重复覆盖问题,核心解决方案是添加迁移完成标记,确保配置映射只执行一次,同时兼容跨版本直接更新的场景。

实现思路

  1. 新增一个迁移标记配置项(比如reviewConfigMigrated),用来记录是否已经完成旧配置到新配置的迁移
  2. 仅当旧配置reviewModeration存在且迁移标记未设置时,才执行值映射逻辑
  3. 在目标版本≥1.6.4时,统一移除旧配置键,避免后续干扰

具体代码实现

在插件的update方法中修改逻辑如下:

use Shopware\Core\System\SystemConfig\SystemConfigService;
use Shopware\Core\Framework\Plugin\Context\UpdateContext;

public function update(UpdateContext $context): void
{
    parent::update($context);

    $configService = $this->container->get(SystemConfigService::class);
    $targetVersion = $this->getVersion();

    // 配置键与迁移标记定义
    $oldConfigKey = 'reviewModeration';
    $newConfigKey = 'autoPublishStars';
    $migratedFlag = 'reviewConfigMigrated';

    // 获取旧配置值与迁移状态
    $oldModerationValue = $configService->get($oldConfigKey, $context->getContext());
    $hasMigrated = $configService->get($migratedFlag, $context->getContext());

    // 仅在未迁移且旧配置存在时执行映射
    if ($oldModerationValue !== null && !$hasMigrated) {
        // 根据业务逻辑映射旧值到新配置:示例中true对应自动发布所有评论,false对应不自动发布
        $newPublishValue = $oldModerationValue ? 'All' : 'None';
        $configService->set($newConfigKey, $newPublishValue, $context->getContext());
        
        // 设置迁移标记,防止后续更新重复执行
        $configService->set($migratedFlag, true, $context->getContext());
    }

    // 1.6.4及以上版本删除旧配置键
    if (version_compare($targetVersion, '1.6.4', '>=')) {
        $configService->delete($oldConfigKey, $context->getContext());
    }
}

关键细节说明

  • 迁移标记的作用:无论用户是逐步更新(1.6.2→1.6.3→1.6.4)还是跨版本直接更新(1.6.2→1.6.4),只要标记已设置,就不会再触发迁移逻辑,避免覆盖已有的autoPublishStars值
  • 跨版本兼容:直接从低版本升级到1.6.4时,旧配置reviewModeration还存在,会正常执行迁移后再删除旧键
  • 值映射调整:根据你的实际业务调整$newPublishValue的映射规则,比如原reviewModeration=true可能对应其他星级规则,自行修改即可

测试场景验证

  • 测试1:1.6.2→1.6.3→1.6.4:迁移仅在1.6.2→1.6.3时执行,后续更新不会修改autoPublishStars
  • 测试2:1.6.2→1.6.4:直接完成迁移并删除旧配置,autoPublishStars保留正确映射值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 09:40:24