Удалить загруженное изображение в пользовательском модуле

magento.stackexchange https://magento.stackexchange.com/questions/16810

  •  22-10-2019
  •  | 
  •  

Вопрос

ОБНОВИТЬ
Я обновляю вопрос, когда решил одну из проблем в этом вопросе. Первоначальный вопрос ниже линии.

Теперь я могу увидеть предварительный просмотр изображения, так как проблема была с приведенным ниже кодом

$fieldset->addField('banner', 'image', array(
    'label' => Mage::helper('designer')->__('Banner'),
    'required' => false,
    'name' => 'banner',
));

где вместо image, file был написан для типа поля. Но теперь проблема в том, что я не могу удалить предыдущее изображение. Я проверяю delete image Флакторы, но файл все еще остается там. Почему он не удаляет?


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

screen shotМне нужно написать дополнительный код в моем Adminhtml вкладка?

Это было полезно?

Решение

Ответил Р. С. на переполнение стека

В твоей saveAction вашего контроллера вам нужно проверить, если delete image Флакторы - проверка.

Например.

if (isset($_FILES['checkcsv']['name']) && $_FILES['checkcsv']['name'] != '') {
    try {
        ...
        $uploader->save($path, $logoName);

        save path to database

    } catch (Exception $e) {

    }
}
else if((isset($data['banner']['delete']) && $data['banner']['delete'] == 1)){

    //set path to null and save to database
    $data['banner'] = '';

    //can also delete file from fs
    unlink(Mage::getBaseDir('media') . DS . $data['banner']['value']);
}

Другие советы

Ниже код запишите в своем действии сохранения вашего контроллера

  if (isset($data['image']['delete'])) {
       Mage::helper('your_helper')->deleteImageFile($data['image']['value']);
  }
  $image = Mage::helper('your_helper')->uploadBannerImage();
  if ($image || (isset($data['image']['delete']) && $data['image']['delete'])) {
       $data['image'] = $image;
  } else {
       unset($data['image']);
  }

Напишите ниже код в своем помощнике

    public function deleteImageFile($image) {
    if (!$image) {
        return;
    }
    try {
        $img_path = Mage::getBaseDir('media'). "/" . $image;
        if (!file_exists($img_path)) {
            return;
        }
        unlink($img_path);
    } catch (Exception $exc) {
        echo $exc->getTraceAsString();
    }
}

Замените your_helper на свой фактический помощник

Я рекомендую использовать плагин "Clear Image".

Потому что функция удаляет изображение, а не удаляйте изображение с сервера.

Если вы удалите изображение, кто бесполезен в базе данных (так что в вашем магазине Magento)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с magento.stackexchange
scroll top