Удалить загруженное изображение в пользовательском модуле
-
22-10-2019 - |
Вопрос
ОБНОВИТЬ
Я обновляю вопрос, когда решил одну из проблем в этом вопросе. Первоначальный вопрос ниже линии.
Теперь я могу увидеть предварительный просмотр изображения, так как проблема была с приведенным ниже кодом
$fieldset->addField('banner', 'image', array(
'label' => Mage::helper('designer')->__('Banner'),
'required' => false,
'name' => 'banner',
));
где вместо image
, file
был написан для типа поля. Но теперь проблема в том, что я не могу удалить предыдущее изображение. Я проверяю delete image
Флакторы, но файл все еще остается там. Почему он не удаляет?
Я создал модуль с Создатель модуля и способен сохранять изображения. Но когда в следующий раз я захочу отредактировать запись, он не показывает предварительный просмотр загруженного изображения или флажки Delete.
Мне нужно написать дополнительный код в моем 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)