Supprimer l'image dans le module uploadé sur mesure
-
22-10-2019 - |
Question
UPDATE Je met à jour la question que je résolu l'un des problèmes dans cette question. La question initiale est inférieure à la ligne.
Je suis maintenant en mesure de voir l'aperçu de l'image que le problème était avec le dessous de code
$fieldset->addField('banner', 'image', array(
'label' => Mage::helper('designer')->__('Banner'),
'required' => false,
'name' => 'banner',
));
où au lieu de image
, file
a été écrit pour le type de champ. Mais maintenant, le problème est, je suis incapable de supprimer l'image précédente. Je ne cochez la case delete image
mais le fichier reste toujours là. Pourquoi ne pas supprimer son?
J'avais créé un module avec créateur le module et capable d'enregistrer des images. Mais quand la prochaine fois que je veux modifier le dossier, il ne montre pas l'aperçu de l'image ou la case à cocher Supprimer uploadé.
Ai-je besoin d'écrire du code supplémentaire dans mon sous forme onglet adminhtml ?
La solution
Questions traitées par R. S sur stackoverflow
Dans votre saveAction
vous contrôleur, vous devez vérifier si la case est delete image
contrôle.
Par exemple.
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']);
}
Autres conseils
Ci-dessous écriture de code dans votre sauvegarde action de votre contrôleur
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']);
}
Ecrire ci-dessous le code dans votre assistant
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();
}
}
Remplacer your_helper à votre classe d'aide réelle
Je recommande l'utilisation plug-in "image claire".
Parce que, la fonction de suppression d'image ne pas supprimer l'image du serveur.
Si vous supprimez l'image, qui ne sert à rien dans la base de données (donc dans votre magasin de magento)