Best Practice zum Anlegen/Auslesen von Artikel-Varianten

Liebe Shopware-Community,

 

ich schreibe gerade ein Plugin, bei welchem Artikel-Varianten automatisiert angelegt werden. Dabei wird jedoch der standard Shopware-Konfigurator nicht genutzt. Es läuft darauf hinaus, dass im Rahmen meines Plugins weitere Datenbankeinträge unter  s_articles_details  und dementsprechend auch unter  s_articles_attributes  sowie s_articles_prices  gemacht werden müssen. Die Artikel-Varianten sollen ganz bewusst nicht vom Shopware-Konfigurator verwaltet werden.

 

Soviel zum Kontext. Nun zur eigentlichen Frage: Was ist der momentan empfohlene Weg zum Anlegen und Auslesen von Artikeln bzw. Artikel-Varianten für Frontend-Shopware-Plugins? Ich fühle mich dabei unwohl, diese Aufgaben direkt via Datenbank-Queries zu erledigen und so eine Abhängigkeit in meinem Plugin zum Datenbankschema aufzubauen. Steht hierzu ein entsprechender Service im DI-Container zur Verfügung? Oder sollte die REST-Api von Shopware genutzt werden? Gibt es noch weitere Varianten, die ich noch nicht erkannt habe?

 

Über Hinweise, gerne auch mit Beispielcode, würde ich mich sehr freuen.

Liebe Grüße

Also:

  1. Nur _attributes Tabellen erweitern, da diese bei Datenbank-Updates nicht berücksichtigt und somit nicht überschrieben werden.

  2. Du solltest dir dringend die Entwickler-Tutorials durchlesen! Dort wird Shopware erklärt. Doctrine, Models, Ressourcen, Controller, Events, Hooks… (die Tools die du zum Anlegen von Artikeln nutzen solltest).

https://developers.shopware.com/developers-guide/

  1. Ist das wirklich ein Frontend-Plug-In? (Wobei das Shopware eigentlich relativ egal ist)

  2. Warum sind deine Varianten bewusst anders? Was ist der Vorteil oder die Vorgabe?

Hallo steinsoftware,

es handelt sich um ein Frontend-Plugin, bei welchem ein externes Konfigurationssystem über eine Web-API angesprochen wird. Nach Abschluss des Konfigurationsprozesses muss dynamisch eine Artikel-Variante auf Shopware-Seite erstellt werden. Mit dem _attribute-System bin ich vertraut und es kommt im Rahmen des Plugins bereits zum Einsatz. Auch mit dem Developer Guide habe ich mich auseinandergesetzt, über vorhandene Services bzw. andere Lösungen zur Problemstellung (außer dem einfachen Einsatz von Datenbank-Queries) habe ich dort jedoch keine Information gefunden.

Im Developers-Guide finde ich nicht ausreichend Informationen über den Service-Layer. Damit meine ich nicht den Einsatz selbstgeschriebener Services im Plugin (die Quellen hierzu sind hervorragend, Danke an das Shopware-Team), sondern die bereits vorhandenen Shopware-Services. Denkbar wäre zum Beispiel etwas ähnliches wie das SearchBundle (SearchBundle), nur zur Interaktion mit einzelnen Artikeln (lesen/schreiben). 

Ja aber z.B. unter engine/Shopware/Controllers/Backend/Article.php wird doch perfekt aufgezeigt wie ich mir das Artikel-Repository hol und eine Artikel speicher.

Die Stelle hat man sofort gefunden. So sollte man das machen. Muss dann eben an deine Bedürfnisse angepasst werden. Das meinte ich mit meinem Punkt 2.