在自定义模块中删除上传的图像
-
22-10-2019 - |
题
更新
当我解决了这个问题中的一个问题时,我正在更新这个问题。最初的问题在线下方。
我现在能够看到图像的预览,因为问题与以下代码有关
$fieldset->addField('banner', 'image', array(
'label' => Mage::helper('designer')->__('Banner'),
'required' => false,
'name' => 'banner',
));
而不是在哪里 image
, file
是为字段类型编写的。但是现在问题是,我无法删除上一个图像。我确实检查了 delete image
复选框,但该文件仍然保留在那里。为什么不删除?
我创建了一个模块 模块创建者 并能够保存图像。但是,当我下次我想编辑记录时,它不会显示上传图像或删除复选框的预览。
我需要在我的 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替换为实际的助手课程
我建议使用插件“清除图像”。
因为,函数删除图像不会从服务器中删除图像。
如果您删除图像,那么在数据库中没有用的图像(因此在您的Magento商店中)