Hallo, ich versuche jetzt schon den halben Tag den Hook PriceForUpdateArticle anzusteuern. Klappt leider überhaupt nicht. Egal ob ichs per Replace oder after versuche er machts nicht.
<?php class Shopware_Plugins_Frontend_JvBTest_Bootstrap
extends Shopware_Components_Plugin_Bootstrap
{
public function getCapabilities()
{
return array(
'install' => true, 'update' =\> true, 'enable' =\> true ); } public function getLabel() { return 'Teeest'; } public function getVersion() { return '1.0.0'; } public function getInfo() { return array( 'version' =\> $this-\>getVersion(), 'label' =\> $this-\>getLabel(), 'supplier' =\> 'dwadwadaw.de JvB', 'description' =\> 'Test', 'support' =\> 'JvB', 'link' =\> 'http://dwadwada.de' ); } public function install() { $this-\>registerEvents(); return true; } private function registerEvents() { $this-\>subscribeEvent( 'sBasket::getPriceForUpdateArticle::after', 'aftergetPriceForUpdateArticle' ); } public function getPriceForUpdateArticle($id, $quantity, $queryAdditionalInfo) { //... return $queryNewPrice; //letzte Zeile in der originalen Funktion } public function aftergetPriceForUpdateArticle(Enlight\_Hook\_HookArgs $arguments) { die(); echo "TEST"; $articleData['price'] = '123'; $arguments-\>setReturn($articleData); } }
Was ist an dem Code falsch? Das die(); und echo “TEST” ist nur dazu da das ich merke wenn er greift… Er macht aber überhaupt nichts. Bitte um Hilfe, bin am verzweifeln. Viele Grüße Joni
Du kannst private Methoden nicht hooken. Viele Grüße
[quote=“Aquatuning GmbH”]Du kannst private Methoden nicht hooken. Viele Grüße[/quote] Das habe ich befürchtet :x Und wie kann ich dennoch Code hinzufügen?
Die Methode stellt doch ein event bereit!? Viele Grüße
[quote=“Aquatuning GmbH”]Die Methode stellt doch ein event bereit!? Viele Grüße[/quote] Bin leider neu in dem Shopware Entwicklungs gebiet. Wie stelle ich das jetzt an das ich z. B. $queryNewPrice bearbeiten will? z. B. $queryNewPrice[‘price’] Wäre perfekt wenn du mir das sagen könntest dann bin ich nämlich schon ein schritt weiter Danke
[quote]Bin leider neu in dem Shopware Entwicklungs gebiet.[/quote] Im Shopware wiki ist der Umgang mit events und hooks inkl. Beispielen wunderbar dokumentiert. Siehe dazu: http://wiki.shopware.com/Shopware-4-Eve … l_981.html Viele Grüße
[quote=“Aquatuning GmbH”][quote]Bin leider neu in dem Shopware Entwicklungs gebiet.[/quote] Im Shopware wiki ist der Umgang mit events und hooks inkl. Beispielen wunderbar dokumentiert. Siehe dazu: http://wiki.shopware.com/Shopware-4-Eve … l_981.html Viele Grüße[/quote] Erstmal, vielen Dank für deine Hilfe. Ich hab mir die Events jetzt angeschaut und irgendwie komme ich nicht so recht weiter. Könntest du mir vllt ein Beispiel machen in dem ich die Variable $queryNewPrice[‘price’] z. B. auf “1234” ändern kann und das es praktisch so genommen wird als hätte ichs mitten in den Code geschrieben? Ich habe das Plugin eigentlich mitten in den Code geschrieben, so mache ich das bei anderen CMS Systemen immer. Das hat nur den Hintergrund um zu sehen ob es funktioniert und danach binde ich das ganze in ein Plugin ein… Leider bereitet mir das einige Schwierigkeiten
Du hast es innerhalb von 30 Minuten geschafft den wiki Beitrag komplett zu lesen, zu verstehen, die Beispiele durchzuspielen und testweise auf deinen fall anzuwenden?! Nicht schlecht - so schnell könnte ich das nicht. Aber wo liegen konkret deine Probleme? Wie sieht dein Code aktuell aus? Gesendet von meinem iPhone mit Tapatalk
Haha, nein habe ich natürlich nicht. Ich hatte mich davor schon mit dem Beitrag beschäftigt. Das mit dem Hooks habe ich kapiert, da ich soetwas auch schon zuvor mal angewendet habe. Ich verstehe das mit den Events generell nicht. An was erkennt das Script jetzt das er in die Stelle meinen Code einfügen soll? Wie finde ich den Event Namen und an was ist er zu erkennen? Ich verstehe die Logik dahinter nicht. Morgen im Büro werde ich mich nochmal damit befassen… Aber wäre super wenn mir jemand ein Beispiel mit meinem wunsch machen könnte. Ich kann das dann in der Regel sehr schnell Nachvollziehen. Viele Grüße & Danke Joni
Hallo, so ich bin ein Stück weiter aber leider nicht viel weiter ich hab jetzt schon mal geschafft das Event anzusteuern und kann dort auch ausgeben.
private function registerEvents() { $this-\>subscribeEvent( 'Shopware\_Modules\_Basket\_getPriceForUpdateArticle\_FilterPrice', 'ongetPriceForUpdateArticle' ); } public function ongetPriceForUpdateArticle(Enlight\_Event\_EventArgs $arguments) { $controller = $arguments-\>getSubject(); $id = $arguments-\>getId(); echo $id; }
Ich will jetzt aber nicht die teile des Arrays die in dem Controller gesetzt werden bearbeiten, sondern alle die in der array $queryNewPrice gesetzt sind. Ich brauche aus der Array hauptsächlich die ArticleID und den Price. Den Price möchte ich am schluss bearbeiten und wieder zurückgeben. Wie kriege ich das hin? Vielen Dank für die hilfe. // EDIT Habs hinbekommen - $controller = $arguments-\>getSubject(); $queryNewPrice = $arguments-\>getReturn();
Die entsprechende Variablen Laden. Dann normal bearbeiten z. B. $queryNewPrice = 1;
und am schluss mit $arguments-\>setReturn($queryNewPrice);
zurück geben Vielen Dank