ich habe folgendes Problem beim Synchronisieren der Artikle mit der API:
Wenn ich bei einem Variantenartikel eine Variante löschen möchte, gebe ich Sie beim aktualisieren des Artikels einfach nicht mehr mit, dann wird sie gelöscht. Das passt soweit.
Wenn der Artikel aber gar keine Varianten mehr haben soll, gebe ich jetzt ‘variants’=>null mit, die Varianten bleiben dann aber bestehen.
Wie kann ich über die Artikel API alle Varianten löschen?
//edit Da war jemand schneller, und scheint auch einfacher…
die API hat für Varianten den expliziten Endpunkt (zumindest in der aktuellsten Version 5.2.x)
DELETE /api/variants/{id}
Ebenfalls mit dem optionalen Parameter
?useNumberAsId=1
Wenn Du vorher den Artikel abrufst mit
/api/articles/{number}?useNumberAsId=1
oder
/api/articles/{id}
bekommst Du den Artikel inkl. aller Varianten. Die Hauptvariante ist wie immer in mainDetail.
Die anderen Varianten finden sich als Array in details, inkl der Varianten id. Die könntest Du dann in
DELETE /api/variants/{id}
verwenden. Oder wenn bekannt halt direkt mit der number und dem oben erwähnten Parameter.
Vielleicht kannst Du mir auch eine Frage beantworten. Wenn ich bei einem put /api/articles/{id} eine Variante, die vorher drin war beim erneuten updaten weglasse, wird die alte NICHT gelöscht. Warum läuft das bei Dir so? Hast Du bei den Varianten bereits ids drin? Ich habe keine und die Zuordnung findet anscheinend über die number statt. Aber wenn ich einen Eintrag weglasse, bleibt die weggelassene bestehen.
benutzen Sie __options_variants mit replace => true
// $data Ihr artikel array
$data[‚__options_variants‘] = array(replace => true);
Viele Grüße
Ahmad
Super vielen Dank, habe ich mir gerade im Code angesehen, das sieht sehr vielversprechend aus.
Was muss ich dann bei variants mitgeben? Bei null passiert nichts, bei einem leeren Array bekomme ich eine nicht näher definitierte ValidationException.
Beste Grüße
EDIT:
Habe das Problem nun lokalisiert:
Wenn der Artikel bereits Varianten hat, muss man bei variants ein leeres Array mitgeben, wenn nicht darf man das nicht. Jetzt weiß ich beim Import aber ja nicht, ob im Shop der Artikel jetzt Varianten hat oder nicht. Gibt es eine Möglichketi des Imports, bei dem ich das nicht vorher überprüfen muss?
benutzen Sie __options_variants mit replace => true
// $data Ihr artikel array
$data[‚__options_variants‘] = array(replace => true);
Viele Grüße
Ahmad
Super vielen Dank, habe ich mir gerade im Code angesehen, das sieht sehr vielversprechend aus.
Was muss ich dann bei variants mitgeben? Bei null passiert nichts, bei einem leeren Array bekomme ich eine nicht näher definitierte ValidationException.
Mich würde interessieren, wie man bei einem Hauptartikel die Variantenfähigkeit via REST-API beenden kann? Ziel soll es sein, im Shopware-Backend den Haken bei Varianten-Artikel zu entfernen. Der folgende Code im Hauptartikel tut dies nicht:
Das ganze funktioniert aber nur, wenn der Artikel dabei Varianten hat. Wenn die Variantenfähigkeit bereis negativ ist und man das Update ausführt, bekommt man einen Fehler - einer der vielen vielen Fehler in der Shopware API