eliminazione immagine inserita nel modulo personalizzato
-
22-10-2019 - |
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.
Ho bisogno di scrivere codice aggiuntivo nel mio modulo scheda adminhtml
Soluzione
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)