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é.

capture d'écran Ai-je besoin d'écrire du code supplémentaire dans mon sous forme onglet adminhtml ?

Était-ce utile?

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)

Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top