Magento 2.2, добавляющее изображения к продукту программно, не устанавливает small_image

Я добавляю изображения к продуктам программно. Каждый товар может иметь от 1 до n изображений. Поэтому я переупорядочиваю массив изображений так, как мне нужно, а затем для первого изображения массива (которое должно быть первым, которое будет отображаться на странице продукта и в представлении списка продуктов) я устанавливаю атрибут media_attribute по мере необходимости (изображение , small_image, миниатюра).

Кажется, все работает нормально, и изображения правильно упорядочены в деталях продукта, но маленькое изображение и миниатюра не установлены.

Это фрагмент кода, который я использую для добавления изображений (обычно используется везде)

ksort($prod_images);
foreach($prod_images as $key=>$img){
    $imgPath = $dirName . $img;

    try{
        if($key == 1){
            $prod->addImageToMediaGallery($imgPath, array('image', 'small_image','thumbnail'), false, false);
        }else{
            $prod->addImageToMediaGallery($imgPath, null, false, false);
        }
        $prod->save();
    }catch(\Exception $e){
    }       
}

В конце концов мне удалось установить правильное изображение как маленькое/большое/базовое, если я переверну массив и добавлю его как последнее изображение, но таким образом порядок изображений неверен, и мне нужно сохранить его или в конечном итоге изменить, но я не мог найти способ для этого.

Любая подсказка?

ИЗМЕНИТЬ

Я нашел патч, но на самом деле он меня не удовлетворяет... после первого сохранения продукта я вспоминаю существующие образы и устанавливаю первый как базовый/большой/маленький, и вроде работает, но на самом деле тратит много времени...

поэтому я все еще ищу реальное решение.


person sissy    schedule 08.03.2018    source источник


Ответы (1)


Наконец мне удалось заставить его работать, позвонив:

$this->productRepository->save($_product);

Вместо

$_product->save();
person Ricardo Ruiz Romero    schedule 17.07.2020