如何通过Shopware 6 Admin API PHP SDK创建含媒体的商品
如何用Shopware 6 Admin API PHP SDK关联媒体到商品
要把上传的媒体资源关联到商品,核心是先完成媒体上传并获取有效ID,再通过Shopware要求的关联结构把媒体绑定到商品上,具体操作如下:
1. 上传媒体并获取媒体ID
先通过uploadMediaFromUrl完成媒体上传,注意提前生成合法的$mediaId(用Uuid::randomHex()生成),上传完成后这个ID就是可用的媒体记录ID:
use Symfony\Component\Uid\Uuid; // 生成唯一媒体ID $mediaId = Uuid::randomHex(); // 从指定URL上传媒体文件 $mediaService->uploadMediaFromUrl($mediaId, $url, 'jpg', 'test-media');
2. 关联媒体到商品
创建商品时,media字段需要传入关联数组结构,不能直接传媒体对象或单一ID。你可以在结构里指定媒体ID、排序位置、是否为主图等属性:
$productRepository->create([ 'id' => Uuid::randomHex(), 'name' => 'New Product', 'taxId' => $product->taxId, 'price' => $product->price, 'productNumber' => $product->productNumber . random_int(10, 1000), 'stock' => $product->stock, 'media' => [ [ 'mediaId' => $mediaId, // 填入刚才上传得到的媒体ID 'position' => 1, // 媒体在商品图中的排序位置,1为首位 'visible' => true, 'main' => true // 设置该媒体为商品主图(可选) ] ] ], $context);
额外说明
- 若要关联多个媒体,只需在
media数组中添加更多子项即可,每个子项对应一个媒体记录 - 确保媒体上传完成后记录已成功创建,再执行商品关联操作,避免因媒体未同步导致关联失败
- 如果是更新已有商品的媒体,使用
productRepository->update()方法,传入商品ID和media字段的更新结构即可,逻辑与创建时一致
内容的提问来源于stack exchange,提问作者Marius Faber
相关产品推荐
相关产品推荐

