カスタムモジュールでアップロードされた画像を削除します
-
22-10-2019 - |
質問
アップデート
この質問の問題の1つを解決したので、質問を更新しています。元の質問は行の下にあります。
問題は以下のコードにあるので、画像のプレビューを見ることができます
$fieldset->addField('banner', 'image', array(
'label' => Mage::helper('designer')->__('Banner'),
'required' => false,
'name' => 'banner',
));
代わりに image
, file
フィールドのタイプのために書かれました。しかし、問題は、以前の画像を削除することができないということです。私はチェックします delete image
チェックボックスがありますが、ファイルはまだそこに残ります。なぜ削除しないのですか?
でモジュールを作成しました モジュール作成者 画像を保存できます。しかし、次回レコードを編集したいときは、アップロードされた画像または削除チェックボックスのプレビューが表示されません。
追加のコードを書く必要がありますか? 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で)
所属していません magento.stackexchange