Eigene Felder in Warenkorb übertragen ohne die Nutzung des OffCanvas-Warenkorbs (addArticle)

Hallo liebe shopware - Gemeinde,

gibt es eine Lösung (über ein Plugin), eigene (Artikel-Freitext-)Felder in den Warenkorb zu übertragen, wenn der OffCanvas-Warenkorb nicht aktiv ist? Beim Feuern der addArticle-Aktion nimmt er ja schon automatisch die Felder und Ihre Werte mit auf, nur verarbeitet er sie (logischerweise) nicht weiter. Wie könnte man dies Lösen, ohne ein Replace - Hook? Hat einer eine Idee oder Lösung, vielleicht [@Moritz Naczenski](http://forum.shopware.com/profile/14574/Moritz Naczenski „Moritz Naczenski“)‍ , [@Daniel Nögel](http://forum.shopware.com/profile/4010/Daniel Nögel „Daniel Nögel“)‍ , [@Stephan Pohl](http://forum.shopware.com/profile/2/Stephan Pohl „Stephan Pohl“)‍ ?

Beste Grüße

Sebastian

Hallo Sebastian,

in der Methode sAddArticle stehen dir doch mehrere Events zur Verfügung, wo du z.B. die Artikel Felder auslesen kannst und dann speichern kannst, wo du möchtest. Zum Beispiel in die s_order_attributes Tabelle o.ä.

Das ganze hat ja erstmal so auch nichts mit dem OffCanvas Warenkorb zu tun. 

Viele Grüße aus Schöppingen

cool Michael Telgmann

@Michael Telgmann schrieb:

Hallo Sebastian,

in der Methode sAddArticle stehen dir doch mehrere Events zur Verfügung, wo du z.B. die Artikel Felder auslesen kannst und dann speichern kannst, wo du möchtest. Zum Beispiel in die s_order_attributes Tabelle o.ä.

Das ganze hat ja erstmal so auch nichts mit dem OffCanvas Warenkorb zu tun. 

Viele Grüße aus Schöppingen

cool Michael Telgmann

Hallo Michael,

vielen Dank für deine Antwort.

Es geht mir darum, dass beim aktivierten OffCanvas - Warenkorb ja die ajaxAddArticleCartAction() - Funktion greift, beim nicht aktivierten OffCanvas - Warenkorb die Funktion addArticleAction(). Wenn man nun beide Varianten unterstützen möchte, müsste man dann ja beide Funktionen erweitern.

Hast du zufällig ein Beispiel zur Hand, wo die sAddArticle oder ein Event darin so erweitert wird, dass Sie die zusätzlichen Felder auf der Artikel-Detailseite mit abspeichert?

Beste Grüße

Sebastian

Hallo Sebastian,

beide Actions nutzen ja letztlich die Methode sAddArticle der Core Klasse sBasket. Dadurch brauchst du deine Erweiterung nur dort zu machen und hast beide Fälle abgedeckt. 

Du könntest z.B. das Filter Event Shopware_Modules_Basket_AddArticle_FilterSql nutzen. Dort bekommst du mit, welcher Artikel gespeichert wird. Dann müsstest du dir zu diesen Artikel dein Feld holen und das dann dort speichern, wo du möchtest. 

Viele Grüße aus Schöppingen

cool Michael Telgmann

@Michael Telgmann schrieb:

Hallo Sebastian,

beide Actions nutzen ja letztlich die Methode sAddArticle der Core Klasse sBasket. Dadurch brauchst du deine Erweiterung nur dort zu machen und hast beide Fälle abgedeckt. 

Du könntest z.B. das Filter Event Shopware_Modules_Basket_AddArticle_FilterSql nutzen. Dort bekommst du mit, welcher Artikel gespeichert wird. Dann müsstest du dir zu diesen Artikel dein Feld holen und das dann dort speichern, wo du möchtest. 

Viele Grüße aus Schöppingen

cool Michael Telgmann

Hallo Michael,

ich danke dir für die Information. Ich werde das Event und deinen Tipp mal testen. Ich will natürlich nur, wenn es wirklich nicht anders geht, ein replace-Hook verwenden müssen, da dies doch ab und an eine Fehlerquelle werden könnte.

Beste Grüße

Sebastian

Hi Sebastian,

ein Hook oder gar ein Replace Hook sollte immer nur der allerletzte Ausweg sein. Die meisten Sachen kann man über Events händeln. Zur Not gehen auch Before oder After Hooks. Ein Replace Hook sollte aber vermieden werden. 

Viele Grüße aus Schöppingen

cool Michael Telgmann

@Michael Telgmann schrieb:

Hi Sebastian,

ein Hook oder gar ein Replace Hook sollte immer nur der allerletzte Ausweg sein. Die meisten Sachen kann man über Events händeln. Zur Not gehen auch Before oder After Hooks. Ein Replace Hook sollte aber vermieden werden. 

Viele Grüße aus Schöppingen

cool Michael Telgmann

Hallo [@Michael Telgmann](http://forum.shopware.com/profile/17553/Michael Telgmann “Michael Telgmann”)‍ ,

ich habe es jetzt einmal testweise mit dem Event probiert:

$this->subscribeEvent(
     'Shopware_Modules_Basket_AddArticle_FilterSql',
     'OnAddArticleFilterSql'
);

public function OnAddArticleFilterSql(Enlight_Event_EventArgs $arguments){
     $article = $arguments->getArticle();
			
     $articleID = $article['articleID'];
     articledetailsID = $article['articledetailsID'];
     $ordernumber = $article['ordernumber'];
}	

Mir ist nur jetzt nicht ganz klar, wie ich bei diesem Event:

a) an die basketId komme

b) an den Inhalt meines eigenen Eingabefeldes.

Mit den Informationen oben kann ich die s_order_basket_attributes nicht wirklich mit dem gewünschten Inhalt füllen. Hast du noch einen Tipp?

Beim anderen Kontext beim ajaxAddArticleCartAction hab ich die Informationen ja - nur wäre dies dort ja nur über eine replace - Hook machbar.

Beste Grüße

Sebastian