Frage

AKTUALISIEREN
Ich aktualisiere die Frage, als ich eines der Probleme in dieser Frage gelöst habe. Die ursprüngliche Frage befindet sich unter der Zeile.

Ich kann jetzt die Vorschau des Bildes als Problem mit dem folgenden Code betrachten

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

wo statt von image, file wurde für die Art des Feldes geschrieben. Aber jetzt ist das Problem, dass ich das vorherige Bild nicht löschen kann. Ich überprüfe das delete image Kontrollkästchen, aber die Datei bleibt noch dort. Warum löscht es nicht?


Ich hatte ein Modul mit erstellt mit Modulschöpfer und in der Lage, Bilder zu speichern. Wenn ich das nächste Mal den Datensatz bearbeiten möchte, wird nicht die Vorschau des hochgeladenen Bildes oder das Kontrollkästchen Löschen angezeigt.

screen shotMuss ich zusätzlichen Code in meinen schreiben? adminHtml Registerkarte Formular?

War es hilfreich?

Lösung

Beantwortet von R. s an Paketüberfluss

In deiner saveAction von Ihrem Controller müssen Sie prüfen, ob die delete image Das Kontrollkästchen ist aktiviert.

Z.B.

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

Andere Tipps

Unter dem Code schreiben Sie in Ihre Speicheraktion Ihres Controllers

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

Schreiben Sie den folgenden Code in Ihren Helfer

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

Ersetzen Sie Ihren_helper in Ihre tatsächliche Helferklasse

Ich empfehle das Plugin "Clear Image".

Weil die Funktion das Bild löschen, entfernen Sie Ihr Bild nicht vom Server.

Wenn Sie das Bild entfernen, wer wird in der Datenbank nicht verwendet (also in Ihrem Magento -Shop)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange
scroll top