[erledigt] REST API: configuratorOptions

Ich versuche gegenwärtig eine Schnittstelle zwischen zwei Shops mittels API zu bauen. Allerdings bei den Varianten mit „configuratorOptions“ verzweifel ich.

Die Ausage bei GET sieht so aus:

  "configuratorOptions": [
                {
                    "id": 3,
                    "groupId": 5,
                    "name": "S (36 bis 39)",
                    "position": 3,
                    "mediaId": 0
                }
            ]

Bei POST habe ich diese Anordnung:

[configuratorOptions] => Array
  (
    [0] => Array
      (
      [name] => S (36 bis 39)
      [position] => 3
  )

)

Aber die Option wird nicht angelegt und mit dem Artikel verbunden. Wie muss ich das bei POST umstellen, damit es mir diese Optionen übernimmt?

 

Ich füge die so den Varianten zu:

'configuratorOptions' => array(
                        array('group' => 'Größe', 'option' => $data['size']),
                    ),        

 

1 „Gefällt mir“

Hm, ich habe mich eigentlich an dei Doku gehalten:

https://developers.shopware.com/developers-guide/rest-api/models/#configurator-option

Aber die Optionen werden nicht angelegt und mit dem Varianten-Artikel verbunden. Muss mal dein Beispiel testen. Geht das auch bei Update?

Nein, da stimmt noch etwas nicht.

Die Optionen werden nun sauber angelegt, aber die Verbindung zur Gruppe leider nicht. Das heißt im Klartext, bei den Einstellungen zum Artikel im Backend Varianten -> Konfiguration ist die Gruppe (hier im Beispiel Größe) nicht mit den Optionen verbunden. Im Frontend werden sie also nicht dargestellt. Ganz konkret fehlen die Verbindungen in der Tabelle “s_article_configurator_set_option_relations”.

Wenn diese noch nicht existieren, müssten die auch automatisch angelegt werden. Das scheint die API leider nicht zu machen.

Na, wenigstens bist Du schon mal weiter.

Hier sind bessere Beispiele zu sehen: https://developers.shopware.com/developers-guide/rest-api/examples/article/

Mit configuratorSet anlegen mit configuratorOptions zuweisen.

@R4M‍

Da hatte ich am Anfang auch Probleme mit, habe es dann ähnlich wie NextMike gelöst, allerdings brauchten wir neben ‘configuratorOptions’ auch noch das ‘configuratorSet’, sonst hat er die auch nie richtig im Backend angelegt, bzw. teils nicht im Frontend auswählbar gemacht…

Hier ein Auszug nur mit Größe:

$updateArticle = [
                    ...
                    'configuratorSet' => [ 'groups' => 
                                     [
                                       [ 'name' => 'Größe', 'options' => 
                                                   [ 
                                                     ['name' => x],
                                                     ['name' => y],
                                                     ['name' => z]
                                                   ] 
                                       ],
                                       ...           
                                     ] 
                    ],
                    'variants' => [
                                    [
                                    ...
                                    'configuratorOptions' => 
                                           [
                                               ['group' => 'Größe', 'option' => x],
                                               ...
                                           ]
                                    ...
                                    ],
                                    ...
                                  ],
                    ...
                ];

 

Sieht schlimmer aus als es ist …

Ist irgendwie ein „gefummel” an dieser Stelle. Wenn ich mir die Beispiele ansehe, bringt es mich nicht wirklich weiter. Während bei GET der Parameter „configuratorSet” auf null gesetzt ist, ist er bei PUT in einem Format wo ich mich frage wie dieser zusammengesetzt wird. Ich lese die Daten per API aus und spiele sie per API wieder ein.

Beim Auslesen über die API stehen die Optionen unter „configuratorOptions” innerhalb der Details. Beim Beispiel oben mit PUT sind die dann bei „configuratorSet” drin. Irgendwie alles verdreht …

Beim configuratorSet hat man alle möglichen Varianten. Bei configuratorOptions nur die der jeweiligen Variante. Beim Anlegen und Updaten ist es wichtig auf das PUT-Format zu achten. Mit GET kannst Du dir die Daten und die Feldnamen anschauen. Aber letztendlich dann wieder in die PUT-Struktur bringen. Einfach den Beispielen folgen.

@PStadtfeld schrieb:

 

Sieht schlimmer aus als es ist …

Ja in der Theorie sieht das alles ganz locker aus, aber nicht wenn du die Daten erst mit der API aus einem anderen Shop auslesen musst. Beim Auslesen (also GET) bekommst du von der API ein völlig anderes Format. Dieses musst du jetzt so umbauen wie du es als Beispiel erwähnt hast :slight_smile: Da kannst Stunden damit verbringen :slight_smile:

 

Habe nun den ganzen Käse in den Griff bekommen. Zwar recht umständlich, aber alles funktioniert :slight_smile: