Domanda

Aggiorna
Sto aggiornando la questione come ho risolto uno dei problemi in questa domanda. La domanda iniziale è al di sotto della linea.

Sono ora in grado di visualizzare l'anteprima dell'immagine come il problema era con il sottostante Codice

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

dove invece di image, file è stato scritto per il tipo di campo. Ma ora il problema è che sono in grado di eliminare l'immagine precedente. Faccio spunta la casella delete image ma il file rimane ancora lì. Perché la sua non è la cancellazione?


che avevo creato un modulo con creatore modulo e in grado di salvare le immagini. Ma quando la prossima volta che si vuole modificare il record non mostra l'anteprima dell'immagine caricata o la casella di controllo di eliminazione.

screen shot Ho bisogno di scrivere codice aggiuntivo nel mio modulo scheda adminhtml

È stato utile?

Soluzione

R. S su StackOverflow

Nel vostro saveAction di voi CONTROLLER è necessario controllare se la casella di controllo è delete image.

Eg.

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']);
}

Altri suggerimenti

Di seguito il codice di scrittura nel vostro salvare l'azione del controller

  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']);
  }

Scrivi sotto il codice nel vostro aiutante

    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();
    }
}

Sostituire your_helper alla classe di supporto attuale

Vi consiglio l'uso plug-in "immagine chiara".

A causa, funzione immagine di eliminazione non rimuovere l'immagine dal server.

Se si rimuove l'immagine, che non è l'impiego in banca dati (così nel vostro negozio Magento)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a magento.stackexchange
scroll top