Где есть функция для удаления изображения из администратора продукта
Я хочу знать расположение логики функции, когда изображение продукта удаляется из раздела администратора. Флажок присутствует на вкладке "изображения". После того, как установите флажок изображений в столбце "Удалить" и нажмите сохранить или сохранить и продолжить, какие функции в обоих случаях вызывают удаление изображений, назначенных продукту.
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);
.
Может быть, это то, что вы ищете.