Article mit Bild über API anlegen

Hallo Zusammen,

ich möchte einen Artikel über die Api inklusive Bild anlegen, was mir leider nicht gelingt.

Das Anlegen eines Artikels ohne Bild ist kein Problem. Es gelingt mir auch ein Bild über die Media-Schnittstelle hochzuladen.

Json-Objekt zum Bild anlegen:

{
  „album“: -1,
  „file“: „hxxps://xxx/public-mime/2Z57JM7.jpg“,
  „description“: „d“

}

Result:

{
  „success“: true,
  „data“: {
    „id“: 721,
    „location“: „http://localhost:8100/api/media/721
  }
}

Wenn ich nun im nächsten Schritt dem neuen Artikel die Bild-ID mitgebe, erhalte ich folgende Fehlermeldung:

{„success“:false,„message“:„\Shopware\Models\Article\Image by id 721 not found“}

Das Bild mit der id 721 existiert in Shopware… Ich kann es auch über die Media-Schnittstelle wieder abrufen.

Ich verstehe nicht ganz was ich falsch mache.

Hat jemand ein funktionierendes Beispiel in JSON wie der Aufruf aussehen müsste, um einen neuen Artikel ein bestehendes Bild hinzuzufügen?

 

Eine weitere Frage dazu:

Kann man einen neuen Artikel auch nur den Link zu einem neuen Bild mitgeben, so dass diese zusammen angelegt werden?

Wenn ich das Beispiel unten aus der API-Doku richtig verstehe, ist das Erstellen eines Artikels mit neuen Bildern auch in einem POST-Request möglich? Wobei ich den Pfad merkwürdig finde, da hier auf keine Datei verweist wird.

Beispiel unter „Further Examples“ in der API-Doku :

 

$testArticle = array(
‚name‘ => ‚NewTestArticle‘,
‚active‘ => true,
‚tax‘ => 19, // alternatively ‚taxId‘ => 1,
‚supplier‘ => ‚Test Supplier‘, // alternatively ‚supplierId‘ => 2,

‚categories‘ => array(
array(‚id‘ => 15),
array(‚id‘ => 16),
),

‚images‘ => array(
array(‚link‘ => ‚http://lorempixel.com/640/480/food/‘),
array(‚link‘ => ‚http://lorempixel.com/640/480/food/‘),
),

‚mainDetail‘ => array(
‚number‘ => ‚swTEST‘ . uniqid(),
‚inStock‘ => 16,
‚prices‘ => array(
array(
‚customerGroupKey‘ => ‚EK‘,
‚price‘ => 99.34,
),
)
),
);
$client->post(‚articles‘, $testArticle);

 

Weiß jemand Rat?

Ich verwende Shopware Version 5.2.12.

 

VG,

Philipp

 

Hallo,

Shopware\Models\Article\Image ist nicht gliche wie Shopware\Models\Media\Media.

in Artikel Array Sie dürfen benutzen:

$testArticle = array(
    ........

    'images' => array(
        array('mediaId' => 721 ),        
    ),

    ...........
);

und ja Sie können einfach den Linke benutzen

$testArticle = array(
    ........

    'images' => array(
        array('link' => 'hxxps://xxx/public-mime/2Z57JM7.jpg'),        
    ),

    ...........
);

Viele Grüße,

Ahmad

Hallo Ahmad,

vielen Dank für deine Antwort, ich verstehe nun was ich falsch gemacht habe.

Die Übergabe des folgenden Json-Objektes funktioniert:

 

{
  „name“: „Test“,
  „supplier“: „my supplier“,
  „description“: „“,
  „descriptionLong“: „“,
  „active“: true,
  „tax“: 19,
  „mainDetail“: {
      „number“: „abcd-000001“
        },
   „images“: [
    {
      „link“: „hxxp://localhost:8100/media/image/56/4f/8c/2Z57JM7.jpg“
    }]
}

 

Eine Frage hätte ich noch:

Ist es möglich den Wert bei „number“ automatisch generieren zu lassen?

VG,

Philipp

Den Wert von „number“ muss Dein Programm generieren.