Я меняю изображение продукта с внешнего URL-адреса во время выполнения в событии saleschannel.product.load. Все это работает нормально, но при размещении заказа выдает ошибку около
SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`sv3_dev`.`order_line_item`, CONSTRAINT `fk.order_line_item.cover_id` FOREIGN KEY (`cover_id`) REFERENCES `media` (`id`) ON UPDATE CASCADE)
Я предполагаю, что это потому, что я перезаписываю медиа-объект продукта своей собственной реализацией. вот так, поэтому он не находит идентификатор обложки носителя при вставке позиции заказа:
$pathInfo = pathinfo($url);
$media = new MediaEntity();
$media->setId(Uuid::randomHex());
$media->setUrl($url);
$media->setMimeType(sprintf('image/%s', $pathInfo['extension']));
$media->setFileExtension($pathInfo['extension']);
$media->setFileName($pathInfo['filename']);
$productMediaEntity = new ProductMediaEntity();
$productMediaEntity->setId(Uuid::randomHex());
$productMediaEntity->setMedia($media);
$productMediaEntity->setPosition(0);
$mediaCollection = new ProductMediaCollection([$productMediaEntity]);
$entity->setMedia($mediaCollection);
if ($entity->getCover() === null) {
$entity->setCover($productMediaEntity);
} else {
$entity->getCover()->setMedia($productMediaEntity->getMedia());
}
Есть ли способ динамически изменять изображение во время выполнения повсюду на витрине?
Я не могу сохранить изображение / носитель в файловой системе из-за некоторых положений об авторских правах, которые не позволяют загружать изображения в магазине. Мы можем загрузить его только во время выполнения.