LegacyStructConverter Methode überschreiben (Argumente verändern)

Hallo zusammen,

für eine bestimmte Funktionalität, möchten wir in Listings nicht nur Artikel anzeigen lassen. Am besten wäre diese Anpassung natürlich möglichst früh und das wäre wenn er die Produkte aus dem Search- oder List-Service in den LegacyStructConverter liefert. Hier nur das riesen Problem wenn ich vorher im bsp. Listservice die Produkte mit anderen Elementen anreichere fliegt die Methode „convertListProductStructList“ bzw. „convertListProductStruct“ hin, weil eben nicht nur „ListProduct“ Elemente in die Methode reingegeben werde. 

Was ich schon versucht habe ist, die komplette Klasse durch meine zu ersetzen also alle Methoden kopieren und den „CoreService“ aufrufen lassen und nur meine Methoden zu erweitern/anzupassen. Leider ist dann das riesen Problem das im Argument $product als Typ „ListProduct“ verlangt wird. Und hier ist auch kein Entkommen, wenn ich das Argument Typenlos lasse wird die Standard Methode des LegacyStructConverter ausgeführt (Warum auch immer) und kann diese nicht mehr überschreiben. Vielleicht ein Schutz oder ähnliches? 

Vielleicht hat einer von euch die Eingebung ansonsten müsste ich wieder unnötig viele Events und Hooks subscriben sehr viele Methoden replacen um ans Ziel zu kommen.

Ich möchte ja gerne Wiederverwendbar, frühzeitig in das System eingreifen. Nur macht mir diese Klasse große bedenken!

Vielen Dank für Hinweise und Antworten!

Warum die Daten zwingend über den structConverter an das Frontend schicken?

@BestShopPossible schrieb:

Warum die Daten zwingend über den structConverter an das Frontend schicken?

Hi, weil ich am liebsten so früh wie möglich meine zusätzlichen Elemente der Liste beifügen möchte. 

Wenn ich es danach mache wird das ja unnötig inperformanter dadurch das ich Methoden replacen muss wie „listingCountAction“ oder die „getArticlesByCategory“ oder sogar noch schlechter erst nach („after“) den Methoden die Elemente der Liste beifüge. 

Ich würde deine nicht Artikel auch von ListProduct erben lassen

1 „Gefällt mir“

@Shyim schrieb:

Ich würde deine nicht Artikel auch von ListProduct erben lassen

An die Idee hatte ich noch gar nicht gedacht :slight_smile: Was mich gerade noch vor die Wand stößt ist, dass ich anscheinend das ListProduct initialisieren muss, da Shopware im LegacyStructConverter versucht auf die Steuer oder Preise zuzugreifen. Hast du hier vielleicht noch einen Lösungsansatz? Vielleicht ein Produkt was existiert benutzen und meine Klasse damit initialisieren? Oder Testwerte schreiben? Es gibt hier wahrscheinlich auch wieder eine relativ einfache Lösung, nur komme ich nicht direkt drauf. 

Vielen Dank für weitere Tipps!