Before Hook: Funktion der Klasse aufrufen

Hallo,

ich nutze den before Hook auf sSaveOrder, um im Warenkorb etwas zu verändern, das funktioniert soweit. Anschließend würde ich für das sBasket-Objekt gerne die Funktion sRefreshBasket aufrufen, um die Bestellsumme etc. neu zu berechnen, bekomme aber diese Fehlermeldung:

[17-Jul-2019 15:03:45 Europe/Berlin] PHP Fatal error: Uncaught Error: Call to undefined method Shopware_Proxies_sOrderProxy::sRefreshBasket() in ...

In der Doku hatte ich nur herausgelesen, dass bei replace-Hooks eine Proxy-Klasse genutzt wird. Ist dies auch bei before-Hooks der Fall? Und: Wie kann ich nun die Funktion für diese Proxy-Klasse aufrufen? Mit executeParent scheine ich nicht weiterzukommen, weil es ja um das konkrete Objekt geht.

 

Danke schonmal für die Hilfe!

Auf die HookArgs getSubject ausführen und darauf sRefreshBasket aufrufen

Danke für deine Antwort! Genau das habe ich gemacht, bei $args->getSubject bekomme ich aber dann ein Objekt der Klasse sOrderProxy, nicht der sOrder.

sOrderProxy extended sOrder.

Du kriegst eigentlich nie die echte s* Klasse, da diese immer nur als Proxy übergeben werden. Sonst funktionieren ja die Hooks nicht :slight_smile:

Das verstehe ich soweit, aber wieso ist dann die method sRefreshBasket() unknown? Wenn sOrderProxy von sOrder erbt, müsste die Funktion doch aufrufbar sein oder?