Neues Produkt erstellen mit cover

Ich versuche aktuell ein Produkt anzulegen und das cover zuzuweisen (via service), das mache ich in etwa so:

$media = [
  'mediaId' => '0c66b1fb1cda5ebc7a0752fade12bd4d',
  'position' => 1
];

$productData = [
                [
                    'id' => $pid,
                    'name' => $product->name,
                    'coverId' => $media['mediaId'],
                    'media' => [$media],
                    // ... mehr felder
                ]
            ];

$this->productRepository->upsert($productData, Context::createDefaultContext());

Da ich aus der Doku nicht schlau werde, muss ich nun nur die coverId setzen oder auch das media feld.

Wenn ich es so anlege dann sehe ich im Backend zwar das erste Bild mit dem label „cover“ - aber im linken cover feld erscheint nichts. In der storefront funktioniert das so, aber ich glaube das etwas nicht passt.

das Cover ist nur ein dedizierter Verweis auf eine ProductMedia Entität. Sprich du musst dem Produkt sowohl mitteilen welche Medien dazu gehören, als auch das Cover setzen. Dann sollte die Darstellung korrekt funktionieren

1 „Gefällt mir“

Aber ich fülle das Feld media doch? Das Ergebnis sieht so aus:

Wer lesen kann ist klar im Vorteil, die coverId ist keine media id sondern eine product media id - jetzt funktioniert es wie gewünscht. Danke für den Hinweis.

1 „Gefällt mir“

Hallo aggrosoft,

was hast Du an Deinem Code geändert?

Wenn ich dem Produkt ein Bild zuordnen will, dann klappt dies nur bedingt. Das Bild wir zwar als „Cover“ geführt, ab das Cover Item ist leer.

Hier mein JSON:

{
	"productNumber": "4713",
	"name": "test4713",
	"coverId": "c133163ebe564ac3822dadd7d34abf97",
	"media": [
		{
			"mediaId": "c133163ebe564ac3822dadd7d34abf97"
		}
	]
}

Das Ergebnis sieht dann so aus:

 

@aggrosoft schrieb:

Wer lesen kann ist klar im Vorteil, die coverId ist keine media id sondern eine product media id - jetzt funktioniert es wie gewünscht. Danke für den Hinweis.

Ich stehe vor demselben Problem wie @Reimers. Wenn Du @aggrosoft eine Lösung gefunden hast, wäre es doch super, wenn Du die hier auch den anderen mitteilen würdest.

Hier habe ich die Lösung gefunden:

https://forum.shopware.com/discussion/69890/coverid-wird-beim-anlegen-des-produktes-per-rest-api-nur-parziell-umgesetzt/p1