Hallo, ich möchte gerne per (lokalem) API Filtergruppen und -Werte anlegen. Leider finde ich keine Beispiele oder Dokumentation zum Aufbau des Arrays, das ich dann in ->create() übergebe. Folgender Code legt zwar die Filtergruppe an - aber wie kann ich die Optionen und Werte anlegen? $propResource = \Shopware\Components\Api\Manager::getResource('PropertyGroup'); $themen = array( "name" =\> "Themen", "option" =\> array( "name" =\> "thema 1", ), ); $obj = $propResource-\>create($themen);
Vielen Dank! Nils
Hallo, hallo, nur die Gruppen werden über die „propertyGroup“ Ressource angelegt. Alles andere läuft über den Artikel: $addPropertyGroup = array( 'filterGroupId' =\> 1, 'propertyValues' =\> array( array( 'option' =\> array('name' =\> "Farbe"), 'value' =\> 'Gelb' ), array( 'option' =\> array('name' =\> "Größe"), 'value' =\> 'XXL' ) ), ); $client-\>call('articles/298', ApiClient::METHODE\_PUT, $addPropertyGroup);
Damit würdest du jetzt bspw. einen Artikel updaten und die entsprechenden Eigenschaften hinzu fügen. Ich dokumentiere das gleich nochmal etwas besser und teste es dabei auch nochmal - aber grundsätzlich hat sich daran egtl. nix geändert. lG Daniel
Danke, funktioniert so, ich hatte umgekehrt gedacht: erst alle Werte anlegen - dann zuweisen. Vielleicht noch ein Hinweis für die Nachwelt: Mehrere Eigenschaftswerte können wie folgt zugeordnet werden, die Trennung per „|“ o.ä. scheint nicht zu funktionieren: 'filterGroupId' =\> 1, 'propertyValues' =\> array( array( 'option' =\> array('name' =\> "Farbe"), 'value' =\> 'Gelb' ), array( 'option' =\> array('name' =\> "Farbe"), 'value' =\> 'Grün' ), array( 'option' =\> array('name' =\> "Farbe"), 'value' =\> 'Rot' ), )
Hallo, ja, wenn man vom Eigenschaften-Modul im Backend aus denkt, kommt man bei der REST-API etwas durcheinander. Ich habe es hier nochmal kurz zusammengefasst: http://wiki.shopware.de/Rest-API-Tutori … enschaften Trennzeichen ("|") gibt es in der REST-API meines Wissens nur, wenn die Zeichenketten auch entsprechend in die Datenbank geschrieben werden (wie bei switch_currencies). Prinzipiell kann man erstmal immer von Arrays ausgehen, weil wir die halt relativ komfortabel wegschreiben können. Besten Gruß, Daniel
Hallo, das klappt soweit alles ganz gut. Allerdings treten vereinzelt *mehrere* gleichnamige Optionen auf - das dürfte doch eigentlich gar nicht auftreten können (siehe Screenshot)?! Ich importiere relativ viele Eigenschaftswerte schnell hintereinander, sind da möglicherweise irgendwelche Schreibvorgänge noch nicht ausgeführt? P.S.: Ein ähnliches Verhalten scheint bei Kategorien aufzutreten - ich hole mir in der Importschleife von ca. 1500 zu importierenden Artikeln (lokales 4er API) regelmäßig die Liste aller vorhandenen Kategorien und lege ggf. eine Kategorie neu an, damit ich die entsprechende Kategorie-ID in articleResource->create() übergeben kann. Scheinbar sind aber zu diesem Zeitpunkt noch nicht alle Schreibvorgänge verarbeitet, so dass eine (bereits früher in der Schleife angelegte!) Kategorie über categoryResource->getList() noch nicht geliefert wird… irgendwann knallt es dann… Wenn es daran liegt: lässt sich dem ORM-Layer irgendwie zwischendrin sagen, dass bitte alle Daten geschrieben werden sollen (auch wenn das zusätzliche Zeit kostet)? Oder irgendein sonstiger Cache? Besten Dank, Nils
Hallo, Muss ich mir auch Montag ansehen, grundsätzlich suchst du Shopware()->Models()-> flush(). Es kann aber auch sein, dass das beim Iterieren der Varianten passiert, dann kommst du da nicht so einfach dazwischen. Leg am besten ein Ticket unter jira.shopware.de an, dann geht’s nicht unter.
[quote=“netzperfekt”] Vielleicht noch ein Hinweis für die Nachwelt: Mehrere Eigenschaftswerte können wie folgt zugeordnet werden, die Trennung per “|” o.ä. scheint nicht zu funktionieren: 'filterGroupId' =\> 1, 'propertyValues' =\> array( array( 'option' =\> array('name' =\> "Farbe"), 'value' =\> 'Gelb' ), array( 'option' =\> array('name' =\> "Farbe"), 'value' =\> 'Grün' ), array( 'option' =\> array('name' =\> "Farbe"), 'value' =\> 'Rot' ), )
[/quote] Gilt das nach wie vor in Shopware 4.2.3 / 4.3? Sobald ich die gleiche Option (exakt gleicher Name) mehrfach mit values befülle, erhalte ich im entsprechenden Set 2 Gruppen mit dem gleichen Namen. Dabei bleiben es scheinbar immer genau 2 Gruppen, auch wenn ich 3 oder mehr values übergebe. Im Frontend werden diese Werte allerdings wieder alle in einer Gruppe ausgegeben…
[quote=„Mathias Elbe“] Gilt das nach wie vor in Shopware 4.2.3 / 4.3? Sobald ich die gleiche Option (exakt gleicher Name) mehrfach mit values befülle, erhalte ich im entsprechenden Set 2 Gruppen mit dem gleichen Namen. Dabei bleiben es scheinbar immer genau 2 Gruppen, auch wenn ich 3 oder mehr values übergebe. Im Frontend werden diese Werte allerdings wieder alle in einer Gruppe ausgegeben…[/quote] Ja, mein Plugin mit dem genannten Code funktioniert auch unter 4.2.3 (4.3 noch nicht getestet, dürfte aber klappen). Das von Dir beschriebene Verhalten habe ich auch schon unter 4.1.x festgestellt, es scheint aber in der Praxis keine Auswirkung zu haben. Warum das so ist, erschließt sich mir nicht.
Bei unserem Shop führt das dazu, dass die doppelten Optionen auch doppelt in der Vergleichsliste auftauchen (einmal gefüllt, einmal leer)… Das passiert bei dir auch nicht?
[quote=„Mathias Elbe“]Bei unserem Shop führt das dazu, dass die doppelten Optionen auch doppelt in der Vergleichsliste auftauchen (einmal gefüllt, einmal leer)… Das passiert bei dir auch nicht?[/quote] im backend ist’s doppelt - im frontend nicht!
Gibt es dazu noch einen neuen Lösungsansatz? Habe dieses Verhalten jetzt bei mir in einer 4.2.2 1. API Call mit mehreren Values für eine neue Option -> Option wird mehrfach angelegt 2. API Call mit einem Value für eine neue Option -> Option wird einmal angelegt - ab jetzt kann ich beliebig viele Values reinschreiben und die eine Option bleibt die einzige
Hallo Zusammen, gelöst ist das Problem ja nicht wirklich, ordentlich ist anders und außerdem ist die Pflege der Eigenschaften so kaum möglich. Da klick man sich ja n Bart wenn mal mehr als 100 Attribute angelegt sind. Das wäre doch mal n Bugfix wert, oder? Viele Grüße
hallo ich stehe vor folgendem problem: ich habe ein kleines script gebaut welches die eigenschaften aus einer CSV-Datei den artikeln zuweist: if (($handle = fopen("file.csv", "r")) !== FALSE) { while (($data = fgetcsv($handle, 10000000, ";", "\"")) !== FALSE) { $num = count($data); $addPropertyGroup = array( 'active' =\> 0, 'filterGroupId' =\> 2, 'propertyValues' =\> array( array( 'option' =\> array('name' =\> $data['3']), 'value' =\> $data['4'] ) ), ); $client-\>call('articles/' . $data['1'] . '?useNumberAsId=true', ApiClient::METHODE\_POST, $addPropertyGroup); $row++; } fclose($handle); }
der import funktioniert soweit… es werden alle eigenschaften-bezeichnungen werden korrekt beim artikel angelegt. aber hier der fehler: die werte werden nicht der eigenschaft zugewiesen (stehen aber im backend als auswahl zur verfügung)… lediglich die letzte eigenschaft des artikels erhält immer einen wert… ist dies ein shopware-bug oder ein fehler in meinem script?
bitte löschen