Backend Controller Function erweitern

Hallo Community, ich versuche gerade ein Plugin zu schreiben, der beim Generieren von Varianten, den Preis nach bestimmte Regeln automatisch berechnet. Unter “Controllers -> Backend -> Article.php” habe ich die Funktion “createConfiguratorVariantsAction” gefunden. In diese Funktion wird eine weitere Funktion “prepareVariantData” aufgerufen: $variantData = $this-\>prepareVariantData($variant, $detailData, $counter, $dependencies, $priceVariations, $allOptions, $originals, $article, $mergeType); Funktion “prepareVariantData” ruft eine weitere Funktion “prepareVariantPrice” auf: $prices = $this-\>prepareVariantPrice($detailData, $priceVariations, $optionIds, $tax); Und genau diese Funktion will ich mit dem Plugin erweitern. Ich habe das schon mal mit einem After Hook versucht: $this-\>subscribeEvent( 'Shopware\_Controllers\_Backend\_Article::prepareVariantPrice::after', 'afterPrepareVariantPrice' ); Danach versuche ich auf den “return” Wert zuzugreifen, da soll er mir eigentlich den Preis geben und mit dem Preis wollte ich dann weiter arbeiten und anschließlich ein modifizierte Preis mit “setReturn” zurück geben: public function afterPrepareVariantPrice(Enlight\_Hook\_HookArgs $arguments) { $returnData = \Doctrine\Common\Util\Debug::dump($arguments-\>getReturn()); } Leider bekomme ich ein “NULL” Wert zurück.:frowning: Das gleiche habe ich auch mit “prepareVariantData” Funktion versucht, aber ohne erfolg. Wie macht man den sowas richtig? Also wie kann man im Shopware, bestimmte Controller Funktionen umbauen oder erweitern(außer Replace Hooks ;)) Grüße Nikita

Hat niemand eine Idee? Kann das auch sein, dass es nicht geht, weil die Funktion „protected“ ist? Aber dann frage ich mich wie soll man bestehende Shopware Funktionen erweitern können. Die erste „public“ Funktion in diesem Beispiel wäre „createConfiguratorVariantsAction“, aber das ist eine „action function“ und gibt kein return, außerdem ist das auch zu spät da einzugreifen, da die Preise schon ausgerechnet und in DB geschrieben sind. Es kann doch nicht sein, dass immer wenn man eine Funktion erweitern will, geht das nur mit „Replace Hook“. Ich habe auch über „Doctrine Events“ Gedanken gemacht, dass ich vor dem Update zugreife und die Daten modifiziere, aber das ist doch kein Standard. Beim nächsten Plugin, wo man die Daten vor dem Artikel Aufruf verändern will, aber nach dem Shopware Standard Logik durchgelaufen ist, kommt das gleiche Problem. Es kann natürlich sein, dass ich einfach alles falsch verstehe, da ich bis jetzt nicht wirklich viel Erfahrung mit Shopware gemacht habe.:frowning: Grüße Nikita

So weit ich weiß kann man nur public-Funktionen über das Hook-System von Shopware hooken.

Hi, nein, protected-Methoden lassen sich ebenfalls erweitern über Hooks. Daniel