删除自定义模块中的上传图像

时间:2014-03-14 13:44:08

标签: magento magento-1.8

更新
我正在更新这个问题,因为我解决了这个问题中的一个问题。最初的问题是在线下面。

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

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

而不是imagefile是为字段类型编写的。但现在问题是,我无法删除上一张图片。我检查了delete image复选框,但文件仍然存在。为什么不删除?


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

screen shot 我是否需要在 adminhtml标签页中编写其他代码?

2 个答案:

答案 0 :(得分:1)

在您的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)){

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

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


}

答案 1 :(得分:0)

下面的代码写入您的控制器的保存操作

  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替换为您的实际助手类