Eliminar imagen cargada en el módulo personalizado
-
22-10-2019 - |
Pregunta
ACTUALIZAR
Estoy actualizando la pregunta mientras resolví uno de los problemas en esta pregunta. La pregunta original está debajo de la línea.
Ahora puedo ver la vista previa de la imagen, ya que el problema estaba con el siguiente código
$fieldset->addField('banner', 'image', array(
'label' => Mage::helper('designer')->__('Banner'),
'required' => false,
'name' => 'banner',
));
donde en lugar de image
, file
fue escrito para el tipo de campo. Pero ahora el problema es que no puedo eliminar la imagen anterior. Reviso el delete image
casilla de verificación Pero el archivo aún permanece allí. ¿Por qué no se elimina?
Había creado un módulo con creador de módulos y capaz de guardar imágenes. Pero cuando la próxima vez que quiera editar el registro, no muestra la vista previa de la imagen cargada o la casilla de verificación Eliminar.
¿Necesito escribir código adicional en mi Formulario de pestaña Adminhtml?
Solución
Respondido por R. S en desbordamiento de pila
En tus saveAction
de su controlador necesita verificar si el delete image
La casilla de verificación es comprobación.
P.ej.
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']);
}
Otros consejos
Código a continuación escriba en su acción de guardado de su controlador
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']);
}
Escriba el código a continuación en su ayudante
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();
}
}
Reemplace su_helper a su clase de ayudante real
Recomiendo usar el complemento "Clear Image".
Porque, la función elimina la imagen no elimine su imagen del servidor.
Si elimina la imagen, quién no sirve en la base de datos (así que en su tienda Magento)