更新
我正在更新这个问题,因为我解决了这个问题中的一个问题。最初的问题是在线下面。
我现在能够看到图像的预览,因为问题在于以下代码
$fieldset->addField('banner', 'image', array(
'label' => Mage::helper('designer')->__('Banner'),
'required' => false,
'name' => 'banner',
));
而不是image
,file
是为字段类型编写的。但现在问题是,我无法删除上一张图片。我检查了delete image
复选框,但文件仍然存在。为什么不删除?
我创建了一个带有模块创建者的模块,并且能够保存图像。但是当我下次想要编辑记录时,它不显示上传图像的预览或删除复选框。
我是否需要在 adminhtml标签页中编写其他代码?
答案 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替换为您的实际助手类