Eingabefeld für z. B. Gravur beim Artikel im Frontend

Hallo zusammen.

Der Kunde soll beim Kauf eines Artikel (Detailseite) die Möglichkeit haben, eine Eingabe z. B. für Gravur etc. zu tätigen. Diese Information soll im Warenkorb und natürlich in der Bestellung verfügbar sein. Welche Schritt sind hier notwendig bzw. wie mache ich so etwas? Leider führte die Suche hier und im Netz nicht zu einem Ergebnis :frowning: Gibt es irgendein Tutorial?

Ich weiß das es fertige Plugins gibt die diese Funktionalität bereitstellen aber mir geht es um die Entwicklung eines eigenen Plugins für ein Kundenprojekt. Danke euch schon mal im Voraus :wink:

 

Beste Grüße
Mike

Duden | Gravur | Rechtschreibung, Bedeutung, Definition, Herkunft Wink

Hallo Mike

die Sache würde ich komplett über ein Plugin lösen.

  1. Schritt Artikeldetail Template um Eingabefeld erweitern

  2. Dann müssen Attribute im Installprozess des Plugins angelegt werden z.B. so:

     public function install(InstallContext $context)
     {
         parent::install($context);
         
         $attributeService->update('s_order_attributes', 'gravur', 'text', [
             'label' => 'Gravur',
             'displayInBackend' => true,
             'position' => 100
         ]);
         
     	$attributeService->update('s_order_basket_attributes', 'gravur', 'text', [
             'label' => 'Gravur',
             'displayInBackend' => true,
             'position' => 100
         ]);
    
         $metaDataCache = Shopware()->Models()->getConfiguration()->getMetadataCacheImpl();
         $metaDataCache->deleteAll();
    
         Shopware()->Models()->generateAttributeModels(
             array('s_order_attributes', 's_order_basket_attributes')
         );
    
     }
    
  3. Stellt sich die Frage ob die Gravur ein Pflichtfeld ist also ob ein Artikel in den Warenkorb hinzugefügt werden kann ohne diese Angabe. Wenn Pflichtfeld muss auch noch das Javascript Plugin “swAddArticle” extended werden.

  4. Dann musst du dich glaube ich in den Hook sBasket::sAddArticle::before einhängen praktisch sobald der Artikel hinzugefügt wird das du den Wert für die Gravur in die Datenbank s_order_basket_attributes schreibst, dann wird sie beim Kaufprozess mit in die s_order_attributes mit übernommen.

Sind alles Gedankenanregungen keine fertigen Lösungen bitte beachten!!

Grüße Lukaschel

@Murmeltier‍ Danke für den Hinweis. War gedanklich schon beim Code :smiley:

@Lukaschel‍ Danke werde ich mir anschauen :wink: