Einkaufswelt-Erweiterung sauber deinstallieren?

Hallo, 

ich habe ein eigenes Element für die Einkaufswelt geschrieben.

Allerdings gibt es Probleme beim etwaigen Deinstallieren des Plugins.

Wie im Handbuch erwähnt, entferne ich das Element in der Methode uninstall() folgendermaßen:

 

 $modelManager = $this-\>container-\>get('models'); $component = $modelManager-\>getRepository(Component::class)-\>findOneBy(['name' =\> 'unsplash', 'pluginId' =\> $context-\>getPlugin()-\>getId()]); if (!$component) return; $modelManager-\>remove($component); $modelManager-\>flush();

 

Das funktioniert auch, das Element ist danach weg.

Allerdings sind Einkaufswelten, die ein solches Element einmal beinhaltet haben, anschließend kaputt.

Problem ist ein Javascriptfehler bei 

xType = component.get(‘xType’);

 

scheint, als könne der Typ der nicht mehr existenten Komponente nicht ermittelt werden, weil sie offenbar immer noch irgendwie in der Einkaufswelt hängt.

 

Wie mach ichs richtig?

 

viele Grüße und Danke

Eigtl musst du das nicht gesondert löschen. Shopware löscht die automatisch. Er merkt sich von welchem Plugin dein EKW Element hinzugefügt wurde und löscht dies beim Entfernen des Plugins und entfernt das Element auch aus allen Einkaufswelten.

@arnebecker‍

 

Die Elemente werden auch entfernt, sie sind in der Einkaufswelt nicht mehr sichtbar (weder zum Hinzufügen noch im Grid).

Allerdings ist die Einkaufswelt dann komplett tot, es lässt sich kein Element (auch keins der Standardelemente) mehr hinzufügen oder ändern.

Es erscheint eben der Javascriptfehler von oben…

Ja, wie arnebecker schon geschrieben hat: Du darfst nicht in den Prozess eingreifen, Shopware macht das automatisch. Wenn du es so machst, kann die Aufräum-Routine von Shopware dein Element nicht mehr finden und es bleiben Reste übrig. Entferne deine eigene Logik, das ist Bad Practice.

 

Viele Grüße

@simkli‍

Das war aber das Beispiel aus dem Shopware Handbuch … 

Wunder mich etwas. Ich halte viel von Daniel. Aber dann ist das leider schlicht falsch! In der Dev Doku steht auch nicht, das man es selber löschen muss. Allerdings steht dort auch nicht explizit, dass es automatisch gelöscht wird.

https://developers.shopware.com/developers-guide/custom-shopping-world-elements/

Naja auf jeden Fall tut er es. Hier fürs alte Plugin System:

Und hier fürs neue:

Danke, wenn ich die Methode uninstall() einfach leer lass, dann funktioniert es.