Event Parameter ändern (aticleName)

Wie kann ich bei dem Event public function sAddArticle ($id, $quantity=1) { ... $sql = Enlight()-\>Events()-\>filter('Shopware\_Modules\_Basket\_AddArticle\_FilterSql',$sql, array('subject'=\>$this,"article"=\>$getArticle,"price"=\>$getPrice,"esd"=\>$sEsd,"quantity"=\>$quantity,"partner"=\>$this-\>sSYSTEM-\>\_SESSION["sPartner"])); ... } den Parameter articleName der ja im Array article ist ändern ? Ich habe es mit $arguments-\>set("articleName" ,"Neuer Artikelname"); versucht. Es ändert sich jedoch nichts. Hier das Arguments dump: stdClass Object ( [\_\_CLASS\_\_] =\> Enlight\_Event\_EventArgs [\_processed] =\> [\_name] =\> Shopware\_Modules\_Basket\_AddArticle\_FilterSql [\_return] =\> INSERT INTO s\_order\_basket (id,sessionID,userID,articlename,articleID, ordernumber, shippingfree, quantity, price, netprice, datum, esdarticle, partnerID, config) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? ) [\_elements] =\> Array ( [subject] =\> stdClass Object ( [\_\_CLASS\_\_] =\> Shopware\_Proxies\_sBasketProxy [sSYSTEM] =\> sSystem [sBASKET] =\> [snippetObject] =\> Enlight\_Components\_Snippet\_Namespace ) [article] =\> Array ( [articleID] =\> 273 [articleName] =\> Mein Test-Artikel blau / S [taxID] =\> 1 [additionaltext] =\> blau / S [shippingfree] =\> 0 [laststock] =\> 0 [instock] =\> 0 [articledetailsID] =\> 870 [ordernumber] =\> SW10002 ) [price] =\> Array ( [price] =\> 15 [tax] =\> 19.00 [netprice] =\> 12.605042016807 ) [esd] =\> 0 [quantity] =\> 1 [partner] =\> ) )

Mit $arguments->getArticle(); kriegst Du zwar das Array, hier Werte zu ändern ist aber bei dem Event nicht vorgesehen. Du könntest das 4 Fragezeichen in der SQL-Abfrage durch den Artikelnamen ersetzen.

Das habe ich gerade probiert. Jetzt wird er Artikel nicht mehr in Warenkorb gelegt. Ich habe es so versucht: $sql = $arguments-\>getReturn(); $sql = "INSERT INTO s\_order\_basket (id,sessionID,userID,articlename,articleID, ordernumber, shippingfree, quantity, price, netprice, datum, esdarticle, partnerID, config) VALUES (?, ?, ?, 'neuerName', ?, ?, ?, ?, ?, ?, ?, ?, ?, ? )"; return $sql; Das müsste doch eigentlich funktionieren dafür ist das event doch da.

Ich habe es jetzt selbst hinbekommen. Ich habe einen after Hook auf sAddArticle gemacht. Dann habe ich einfach ein Datenbankupdate mit der insertID gemacht: public function AfterAddArticle(Enlight\_Hook\_HookArgs $arguments) { $insertID = $arguments-\>getReturn(); $sql = "UPDATE s\_order\_basket SET articlename ='neuer Name' WHERE id = $insertID "; Shopware()-\>Db()-\>query($sql); }

Macht wahrscheinlich mehr Sinn. Ansonsten muss die Anzahl der Parameter natürlich gleich bleiben, also so etwas wie: $sql = "INSERT INTO s\_order\_basket (id,sessionID,userID,articlename,articleID, ordernumber, shippingfree, quantity, price, netprice, datum, esdarticle, partnerID, config) VALUES (?, ?, ?, if (TRUE, 'neuerName', ?), ?, ?, ?, ?, ?, ?, ?, ?, ?, ? )"; Sollte funktionieren.

2 „Gefällt mir“