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.

screen shot¿Necesito escribir código adicional en mi Formulario de pestaña Adminhtml?

¿Fue útil?

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)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a magento.stackexchange
scroll top