Eigenes Einkaufswelt-Plugin -> Änderung führt zur Löschung der Einkaufswelt

Hallo,

ich habe ein Plugin erstellt das mehrere eigene Einkaufswelt-Elemente erzeugt. Diese kann ich auch einwandfrei in Einkaufswelten verwenden.

Problem ist nur, wenn ich mein Plugin erweitere. Beispielweise ein neues Feld  hinzufüge.

Dann muss ich das Plugin komplett neu installieren (ein Update + Cache löschen und neuladen bringt keine Änderung). Nach dem Neuinstallieren sind natürlich meine ganzen Elemente aus den Einkaufswelten gelöscht worden… Warum funktioniert das nicht per Update?

hat niemand eine Idee?

Habe das gleiche Problem und würde mich über eine Antwort freuen! :slight_smile:

Ah, es gibt schon ein Ticket Shopware Issuetracker

Hallo,

und wieso musst du beim Update deines Einkaufswelten - Element - Plugins (beispielsweise für ein neues Feld) das Plugin neu installieren?

Das ist doch gar nicht nötig, damit das neue Feld auch mit auswählbar etc ist. Einfach in der Update - Methode per SQL (gibt leider keine Shopware-Funktion dafür, um ein Einkaufswelten-Element zu aktualisieren/zu erweitern) das neue Feld hinzufügen, kompletten Cache leeren und Backend neu laden. Fertig.

Grüße

Sebastian

@sschreier schrieb:

Das ist doch gar nicht nötig, damit das neue Feld auch mit auswählbar etc ist. Einfach in der Update - Methode per SQL (gibt leider keine Shopware-Funktion dafür, um ein Einkaufswelten-Element zu aktualisieren/zu erweitern) das neue Feld hinzufügen, kompletten Cache leeren und Backend neu laden. Fertig.

Doch, es gibt eine Methode dafür: In Plugin Update Methode sich das passende Widget zum Plugin holen (genauso mit dem selben Widget Namen wie man es ursprünglich angelegt hat), Feld hinzufügen und Doctrine’s persist() und flush() aufrufen - fertig! Kein SQL Gefummel oder ähnliches nötig. Von direktem SQL in einem Plugin würde eh abraten, immer DBAL QueryBuilder oder den Doctrine QueryBuilder verwenden!

Aber es ist richtig, dass es das im neuen Plugin System nicht gibt. Das kann man aber ganz gut von der Basis-Bootstrap.php abschreiben und es so leicht ins neue System portieren. Habe ich bisher auch immer nur so gemacht - funktioniert super. Das ist auch der beschriebene Weg aus dem Shopware Buch.

Ich werde gerne ein ähnliches Plugin machen, doch ich bekomme es nicht hin, Wärst du bereit mir Beispielcode zu senden?

 

Liebe Grüße

Jon

Würde mich auch interessieren. Ich habe ein Plugin dass mehrere interne Emotion Widgets bereitstellt. Da kommen hin und wieder einige dazu oder es ändert sich was. Bei jeder Neuinstallation des Plugins sind auch alle Inhalte weg -_-

Hat hier jemand einen Ansatz, wie das in der neuen Plugin-Struktur bewerkstelligt werden kann?