# Plugin Einstellungen sauber löschen?

**URL:** <https://forum.shopware.com/t/plugin-einstellungen-sauber-loschen/64655>\
**Category:** Programmierung\
**Created:** [12. Februar 2020 um 15:08 UTC](https://forum.shopware.com/t/plugin-einstellungen-sauber-loschen/64655 "2020-02-12T15:08:20Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![R4M](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/r4m/32/9983_2.png) [@R4M](https://forum.shopware.com/u/R4M)\
**Post date:** [12. Februar 2020 um 15:08 UTC](https://forum.shopware.com/t/plugin-einstellungen-sauber-loschen/64655/1 "2020-02-12T15:08:20Z")

</div>

Beim Testen fällt mir auf, das Plugin-Einstellungen nach dem Deinstallieren und sogar Löschen nicht wirklich gelöscht werden. Installiere ich mein Test-Plugin erneut (Cache vorher natürlich gelöscht) dann stehen plötzlich meine alten Einstellungen wieder im Plugin.

**Warum ist so? Wie kann ich diese Einstellungen sauber löschen? (wenn möglich ohne Console)**

---

<div class="post-metadata">

**Author:** ![motorg](https://avatars.discourse-cdn.com/v4/letter/m/ed655f/32.png) [@motorg](https://forum.shopware.com/u/motorg)\
**Post date:** [12. Februar 2020 um 15:15 UTC](https://forum.shopware.com/t/plugin-einstellungen-sauber-loschen/64655/2 "2020-02-12T15:15:01Z")

</div>

Weil nur das Plugin selbst auf “File-Ebene” gelöscht wird, nicht aber die Inhalte die in der Datenbank stehen. Manche Plugins löschen auch die zugehörige Tabelle, die meisten jedoch nicht. Müsste man dann manuell machen. Nervt mich auch immer wieder …&nbsp;

---

<div class="post-metadata">

**Author:** ![R4M](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/r4m/32/9983_2.png) [@R4M](https://forum.shopware.com/u/R4M)\
**Post date:** [12. Februar 2020 um 15:18 UTC](https://forum.shopware.com/t/plugin-einstellungen-sauber-loschen/64655/3 "2020-02-12T15:18:33Z")

</div>

In diesem Falle ist es mein Plugin. Aber wohl die Einstellungen aus der Config werden nicht sauber gelöscht.

---

<div class="post-metadata">

**Author:** ![Michael\_Telgmann](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/michael_telgmann/32/20289_2.png) [@Michael\_Telgmann](https://forum.shopware.com/u/Michael_Telgmann)\
**Post date:** [12. Februar 2020 um 15:21 UTC](https://forum.shopware.com/t/plugin-einstellungen-sauber-loschen/64655/4 "2020-02-12T15:21:26Z")

</div>

Hallo,

das Plugin muss natürlich selber dafür sorgen, dass es Sachen, die es in Datenbanken schreibt beim Deinstallieren wieder löscht. In unserem PayPal Plugin machen wir das für die Plugin Konfiguration z.B. so:&nbsp;[SwagPayPal/InstallUninstall.php at master · shopwareLabs/SwagPayPal · GitHub](https://github.com/shopwareLabs/SwagPayPal/blob/master/src/Util/Lifecycle/InstallUninstall.php#L124-L135)

Viele Grüße aus Schöppingen

![cool](http://forum.shopware.com/plugins/CKEditor/plugins/smiley/images/shopware.png "cool")&nbsp;Michael Telgmann

---

<div class="post-metadata">

**Author:** ![R4M](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/r4m/32/9983_2.png) [@R4M](https://forum.shopware.com/u/R4M)\
**Post date:** [13. Februar 2020 um 09:16 UTC](https://forum.shopware.com/t/plugin-einstellungen-sauber-loschen/64655/5 "2020-02-13T09:16:36Z")

</div>

Ohje, Danke für das Beispiel. Wie ich das in einem einfach Plugin umsetze ist mir noch schleierhaft. Ich bin aber davon ausgegangen, dass die Einstellungen beim Deinstallieren bzw. Löschen automatisch raus fliegen.

---

<div class="post-metadata">

**Author:** ![R4M](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/r4m/32/9983_2.png) [@R4M](https://forum.shopware.com/u/R4M)\
**Post date:** [13. Februar 2020 um 11:46 UTC](https://forum.shopware.com/t/plugin-einstellungen-sauber-loschen/64655/6 "2020-02-13T11:46:57Z")

</div>

Ich mach das jetzt so:

```
/* delete old config */
private function removeConfiguration() {
  $connection = $this->container->get(Connection::class);
  $delQuery = "DELETE FROM system_config WHERE configuration_key REGEXP ? ";
  $result = $connection->executeQuery( $delQuery, Array('MeinPluginName') );
}

```

Und zack ist der Mist raus wenn das Plugin deinstalliert wird. Zumindest in der Testphase sehr nützlich.

---

<div class="post-metadata">

**Author:** ![gwen](https://avatars.discourse-cdn.com/v4/letter/g/e36b37/32.png) [@gwen](https://forum.shopware.com/u/gwen)\
**Post date:** [13. Februar 2020 um 12:36 UTC](https://forum.shopware.com/t/plugin-einstellungen-sauber-loschen/64655/7 "2020-02-13T12:36:16Z")

</div>

auf was prüft denn die regular Expression genau bei dir?

---

<div class="post-metadata">

**Author:** ![R4M](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/r4m/32/9983_2.png) [@R4M](https://forum.shopware.com/u/R4M)\
**Post date:** [13. Februar 2020 um 12:52 UTC](https://forum.shopware.com/t/plugin-einstellungen-sauber-loschen/64655/8 "2020-02-13T12:52:46Z")

</div>

auf die Übergabe von

```
Array('MeinPluginName')
```

---

<div class="post-metadata">

**Author:** ![Michael\_Telgmann](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/michael_telgmann/32/20289_2.png) [@Michael\_Telgmann](https://forum.shopware.com/u/Michael_Telgmann)\
**Post date:** [13. Februar 2020 um 13:47 UTC](https://forum.shopware.com/t/plugin-einstellungen-sauber-loschen/64655/9 "2020-02-13T13:47:12Z")

</div>

Hallo,&nbsp;

Das Löschen von Plugin eigenen Einstellungen sollte auch im Plugin selber gehandelt werden. Shopware kann nicht wissen, was gelöscht werden darf, oder unter welchem Key, die Einstellungen in der System-Config gespeichert sind. Es gibt natürlich eine Vorgabe, die man annehmen könnte, aber dann wäre die Fragen, wann wird gelöscht? Immer? oder nur wenn KeepUserData auf false steht?&nbsp;  
Das Löschen von seinen eigenen Konfigurationen ist auch nicht schwierig. Ich bin gerade dabei die Dokumentation für die Plugin Config zu überarbeiten.&nbsp;[https://docs.shopware.com/en/shopware-platform-dev-en/internals/plugins/plugin-config](https://docs.shopware.com/en/shopware-platform-dev-en/internals/plugins/plugin-config) In dem Zuge werde ich auch das Beispiel-Plugin updaten. Dort könnt ihr euch dann das Löschen abschauen.&nbsp;

Viele Grüße aus Schöppingen

![cool](https://europe1.discourse-cdn.com/flex013/uploads/shopware/original/1X/86c57fbace799dd4eb1f1b8a2d3bdc1733f0aea1.png "cool")&nbsp;Michael Telgmann

---

<div class="post-metadata">

**Author:** ![R4M](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/r4m/32/9983_2.png) [@R4M](https://forum.shopware.com/u/R4M)\
**Post date:** [13. Februar 2020 um 13:59 UTC](https://forum.shopware.com/t/plugin-einstellungen-sauber-loschen/64655/10 "2020-02-13T13:59:49Z")

</div>

Hallo Michael,

erst einmal Danke für deine Ausführung. Ich bin fest davon ausgegangen das Shopware sehr wohl erkennt, wenn ich auf den Button/Link “Löschen” klicke. Shopware erkennt ja auch den Zustand installieren/deinstallieren eines Plugins. Ist ja nicht weiter dragisch, man muss es eben nur wissen als Entwickler. Aktuell habe ich ja einen Weg gefunden und mit nur 3 Zeilen Code ist alles sauber raus.

---

<div class="post-metadata">

**Author:** ![gwen](https://avatars.discourse-cdn.com/v4/letter/g/e36b37/32.png) [@gwen](https://forum.shopware.com/u/gwen)\
**Post date:** [13. Februar 2020 um 14:00 UTC](https://forum.shopware.com/t/plugin-einstellungen-sauber-loschen/64655/11 "2020-02-13T14:00:09Z")

</div>

Bei mir kommt allerdings ein&nbsp;You have requested a non-existent service vor der Installation, wenn ich die Funktion in die uninstall einbinde.

```
public function uninstall(UninstallContext $uninstall): void {
  $this->removeConfiguration();
}

private function removeConfiguration() {
  $connection = $this->container->get(Connection::class);
  $delQuery = "DELETE FROM system_config WHERE configuration_key REGEXP ? ";
  $result = $connection->executeQuery( $delQuery, Array('exampleplugin') );
}

```

&nbsp;

---

<div class="post-metadata">

**Author:** ![R4M](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/r4m/32/9983_2.png) [@R4M](https://forum.shopware.com/u/R4M)\
**Post date:** [13. Februar 2020 um 14:01 UTC](https://forum.shopware.com/t/plugin-einstellungen-sauber-loschen/64655/12 "2020-02-13T14:01:57Z")

</div>

Ja, ganz oben fehlt noch:

```
use Doctrine\DBAL\Connection;

```

&nbsp;

---

<div class="post-metadata">

**Author:** ![gwen](https://avatars.discourse-cdn.com/v4/letter/g/e36b37/32.png) [@gwen](https://forum.shopware.com/u/gwen)\
**Post date:** [13. Februar 2020 um 14:28 UTC](https://forum.shopware.com/t/plugin-einstellungen-sauber-loschen/64655/13 "2020-02-13T14:28:09Z")

</div>

cool danke. Funktioniert.

---

<div class="post-metadata">

**Author:** ![Michael\_Telgmann](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/michael_telgmann/32/20289_2.png) [@Michael\_Telgmann](https://forum.shopware.com/u/Michael_Telgmann)\
**Post date:** [14. Februar 2020 um 10:08 UTC](https://forum.shopware.com/t/plugin-einstellungen-sauber-loschen/64655/14 "2020-02-14T10:08:02Z")

</div>

Hallo,

evtl. könnte man beim Löschen von einem Plugin über die Administration auch den Deinstallations-Prozess des Plugins anstoßen. Halte ich erstmal für keine schlechte Idee. Könntest du dafür vielleicht ein Ticket aufmachen?

Viele Grüße aus Schöppingen

![cool](https://europe1.discourse-cdn.com/flex013/uploads/shopware/original/1X/86c57fbace799dd4eb1f1b8a2d3bdc1733f0aea1.png "cool")&nbsp;Michael Telgmann

---

<div class="post-metadata">

**Author:** ![zenit](https://avatars.discourse-cdn.com/v4/letter/z/a87d85/32.png) [@zenit](https://forum.shopware.com/u/zenit)\
**Post date:** [3. Mai 2020 um 12:08 UTC](https://forum.shopware.com/t/plugin-einstellungen-sauber-loschen/64655/15 "2020-05-03T12:08:43Z")

</div>

Wenn ich ein Plugin manuell deinstalliere über das Backend erhalte ich keine Abfrage bzgl. keepUserData.

Muss man im Plugin selbst noch etwas tun, damit diese Abfrage für den Nutzer beim Deinstallieren auch erscheint?

&nbsp;

// SW6.2.0RC1

---

<div class="post-metadata">

**Author:** ![Moorleiche](https://avatars.discourse-cdn.com/v4/letter/m/6f9a4e/32.png) [@Moorleiche](https://forum.shopware.com/u/Moorleiche)\
**Post date:** [3. Mai 2020 um 12:23 UTC](https://forum.shopware.com/t/plugin-einstellungen-sauber-loschen/64655/16 "2020-05-03T12:23:46Z")

</div>

@zenit‍

Ist imo nur für das deinstallieren des Plugins via console, hätte auch gerne den confirm im backend…&nbsp;

---

<div class="post-metadata">

**Author:** ![zenit](https://avatars.discourse-cdn.com/v4/letter/z/a87d85/32.png) [@zenit](https://forum.shopware.com/u/zenit)\
**Post date:** [4. Mai 2020 um 06:45 UTC](https://forum.shopware.com/t/plugin-einstellungen-sauber-loschen/64655/17 "2020-05-04T06:45:49Z")

</div>

@Moorleiche‍ Danke für die schnelle Rückmeldung. Wollte nur sicher gehen, dass man in SW6 eine solche Abfrage vor dem Deinstallieren nicht erst noch irgendwie im Plugin implementieren müsse -&nbsp; also zusätzlich zum keepUserData-Kram&nbsp; ![Smile](https://forum.shopware.com/plugins/CKEditor/plugins/smiley/images/smile.png "Smile")

---

<div class="post-metadata">

**Author:** ![Michael\_Telgmann](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/michael_telgmann/32/20289_2.png) [@Michael\_Telgmann](https://forum.shopware.com/u/Michael_Telgmann)\
**Post date:** [5. Mai 2020 um 10:14 UTC](https://forum.shopware.com/t/plugin-einstellungen-sauber-loschen/64655/18 "2020-05-05T10:14:31Z")

</div>

Hallo,

keepUserData wird im Admin leider noch nicht abgefragt. Es gibt dazu aber bereits Tickets.

Viele Grüße aus Schöppingen

![cool](http://forum.shopware.com/plugins/CKEditor/plugins/smiley/images/shopware.png "cool")&nbsp;Michael Telgmann

---

<div class="post-metadata">

**Author:** ![inventivo](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/inventivo/32/11397_2.png) [@inventivo](https://forum.shopware.com/u/inventivo)\
**Post date:** [24. Mai 2020 um 15:54 UTC](https://forum.shopware.com/t/plugin-einstellungen-sauber-loschen/64655/19 "2020-05-24T15:54:01Z")

</div>

So mache ich es bisher:

&nbsp;

```
keepUserData()) {
            return;
        }

        $this->removeConfiguration($uninstallContext->getContext());
    }

    private function removeConfiguration(Context $context): void
    {
        /** @var EntityRepositoryInterface $systemConfigRepository */
        $systemConfigRepository = $this->container->get('system_config.repository');
        $criteria = (new Criteria())->addFilter(new ContainsFilter('configurationKey', $this->getName() . '.config.'));
        $idSearchResult = $systemConfigRepository->searchIds($criteria, $context);

        $ids = array_map(static function ($id) {
            return ['id' => $id];
        }, $idSearchResult->getIds());

        if ($ids === []) {
            return;
        }

        $systemConfigRepository->delete($ids, $context);
    }
}

```

&nbsp;

---

<div class="post-metadata">

**Author:** ![Hansibert](https://avatars.discourse-cdn.com/v4/letter/h/8e8cbc/32.png) [@Hansibert](https://forum.shopware.com/u/Hansibert)\
**Post date:** [23. Juni 2020 um 07:40 UTC](https://forum.shopware.com/t/plugin-einstellungen-sauber-loschen/64655/20 "2020-06-23T07:40:05Z")

</div>

> [@Michael Telgmann schrieb:](https://forum.shopware.com/profile/17553/Michael%20Telgmann "Michael%20Telgmann")
> 
> Hallo,
> 
> keepUserData wird im Admin leider noch nicht abgefragt. Es gibt dazu aber bereits Tickets.
> 
> Viele Grüße aus Schöppingen
> 
> ![cool](http://forum.shopware.com/plugins/CKEditor/plugins/smiley/images/shopware.png "cool")&nbsp;Michael Telgmann

Ich habe dazu dieses Issue gefunden: [Shopware Issuetracker](https://issues.shopware.com/issues/NEXT-4521). Es ist geschlossen und die Funktionalität scheint bei SW 6.2.2 nicht vorhanden zu sein.

Ich wünsche dem SW-Team viel Erfolg bei der Umsetzung des Features und werde versuchen, die Lücke vorerst mit Eigengebastel zu überbrücken.

[Nächste Seite](https://forum.shopware.com/t/plugin-einstellungen-sauber-loschen/64655.md?page=2)
