Где есть функция для удаления изображения из администратора продукта


Я хочу знать расположение логики функции, когда изображение продукта удаляется из раздела администратора. Флажок присутствует на вкладке "изображения". После того, как установите флажок изображений в столбце "Удалить" и нажмите сохранить или сохранить и продолжить, какие функции в обоих случаях вызывают удаление изображений, назначенных продукту.

Author: Mathew, 2015-11-27

1 answers

Код находится в Mage_Catalog_Model_Product_Attribute_Backend_Media::beforeSave()

foreach ($value['images'] as &$image) {
    if(!empty($image['removed'])) {
        $clearImages[] = $image['file'];
    } else if (!isset($image['value_id'])) {
        $newFile                   = $this->_moveImageFromTmp($image['file']);
        $image['new_file'] = $newFile;
        $newImages[$image['file']] = $image;
        $this->_renamedImages[$image['file']] = $newFile;
        $image['file']             = $newFile;
    } else {
        $existImages[$image['file']] = $image;
    }
}

Поэтому, если флажок удалить установлен, это вернет значение true if(!empty($image['removed'])) {, тогда изображение помечено для удаления.

Позже это выполняется на основе изображений, которые удаляются ($clearImages):

if (in_array($attrData, $clearImages)) {
    $object->setData($mediaAttrCode, 'no_selection');
}

[ РЕДАКТИРОВАТЬ]

В том же классе в методе afterSave также есть этот код:

if(!empty($image['removed'])) {
    if(isset($image['value_id']) && !isset($picturesInOtherStores[$image['file']])) {
        $toDelete[] = $image['value_id'];
    }
    continue;
}

И позже это называется $this->_getResource()->deleteGallery($toDelete);.
Может быть, это то, что вы ищете.

 2
Author: Marius, 2015-11-27 07:32:08