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

Shopware6.5应用卸载时如何永久删除全部应用数据?

Shopware应用卸载时删除配置数据的实现方案

问题描述

我的小型应用缺少彻底删除配置设置的功能,比如用户在选择框中选择的选项或文本输入框中输入的内容。我希望实现:当用户卸载应用时勾选“永久删除全部应用数据”复选框,即可删除这些数据。我已有manifest.xml和config.xml文件(在config.xml中定义了用户可配置的内容)。我查看了Shopware商店中的多款免费应用,但未找到相关实现线索。请问需要在何处配置,才能让Shopware系统在用户有此需求时从数据库中删除这些设置?

实现步骤

1. 创建卸载处理器类

在应用目录下新建处理器类,实现Shopware的UninstallInterface接口,在uninstall方法中编写删除配置的逻辑。示例代码如下:

<?php

namespace YourAppNamespace\Handler;

use Shopware\Core\Framework\Plugin\Context\UninstallContext;
use Shopware\Core\Framework\Plugin\UninstallInterface;
use Shopware\Core\System\SystemConfig\SystemConfigService;

class UninstallHandler implements UninstallInterface
{
    private SystemConfigService $systemConfigService;

    public function __construct(SystemConfigService $systemConfigService)
    {
        $this->systemConfigService = $systemConfigService;
    }

    public function uninstall(UninstallContext $uninstallContext): void
    {
        // 判断用户是否选择保留数据,是则跳过删除
        if ($uninstallContext->keepUserData()) {
            return;
        }

        // 删除应用对应命名空间下的所有配置项,替换为你的应用manifest.xml中的name值
        $this->systemConfigService->deleteNamespace('YourAppName');
    }
}

2. 注册卸载处理器

在应用的主类(通常是src/YourAppName.php)中,重写getUninstaller方法,返回上述处理器的实例:

<?php

namespace YourAppNamespace;

use YourAppNamespace\Handler\UninstallHandler;
use Shopware\Core\Framework\Plugin;

class YourAppName extends Plugin
{
    public function getUninstaller(): UninstallHandler
    {
        return $this->container->get(UninstallHandler::class);
    }
}

3. 确认manifest配置

确保manifest.xml中的name字段是唯一标识符,这个值会作为系统配置的命名空间前缀,确保删除操作只会清理你的应用配置,不会影响其他应用数据。

关键说明

  • UninstallContext::keepUserData():该方法返回布尔值,false代表用户勾选了“永久删除全部应用数据”,此时执行删除逻辑;true则跳过。
  • SystemConfigService::deleteNamespace():一次性清除对应命名空间下的所有配置项,无需逐个删除配置字段,高效便捷。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 14:16:02