更新
当我解决了这个问题中的一个问题时,我正在更新这个问题。最初的问题在线下方。

我现在能够看到图像的预览,因为问题与以下代码有关

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

而不是在哪里 image, file 是为字段类型编写的。但是现在问题是,我无法删除上一个图像。我确实检查了 delete image 复选框,但该文件仍然保留在那里。为什么不删除?


我创建了一个模块 模块创建者 并能够保存图像。但是,当我下次我想编辑记录时,它不会显示上传图像或删除复选框的预览。

screen shot我需要在我的 Adminhtml选项卡表单?

有帮助吗?

解决方案

回答 R. s堆栈溢出

在你的 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替换为实际的助手课程

我建议使用插件“清除图像”。

因为,函数删除图像不会从服务器中删除图像。

如果您删除图像,那么在数据库中没有用的图像(因此在您的Magento商店中)

许可以下: CC-BY-SA归因
scroll top