質問

アップデート
この質問の問題の1つを解決したので、質問を更新しています。元の質問は行の下にあります。

問題は以下のコードにあるので、画像のプレビューを見ることができます

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

代わりに image, file フィールドのタイプのために書かれました。しかし、問題は、以前の画像を削除することができないということです。私はチェックします delete image チェックボックスがありますが、ファイルはまだそこに残ります。なぜ削除しないのですか?


でモジュールを作成しました モジュール作成者 画像を保存できます。しかし、次回レコードを編集したいときは、アップロードされた画像または削除チェックボックスのプレビューが表示されません。

screen shot追加のコードを書く必要がありますか? adminhtmlタブフォーム?

役に立ちましたか?

解決

応答 R. s の上 スタックオーバーフロー

あなたの中で saveAction あなたのコントローラーのうち、あなたはを確認する必要があります delete image チェックボックスがチェックされています。

例えば。

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

他のヒント

以下のコードコントローラーの保存アクションに書き込み

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

ヘルパーに以下のコードを書いてください

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

Your_Helperを実際のヘルパークラスに置き換えます

プラグイン「クリア画像」を使用することをお勧めします。

なぜなら、機能削除画像をサーバーから削除しないでください。

画像を削除すると、データベースでは役に立たない人(Magento Shopで)

ライセンス: CC-BY-SA帰属
所属していません magento.stackexchange
scroll top