cara menghapus file atau gambar di magento 2. Saya tahu menggunakan unlink('full file path');
akan menghapus file tetapi saya ingin melakukan 2 cara magento . kondisi ketika Pengguna checked
menghapus checkbox
.
cara menghapus file atau gambar di magento 2. Saya tahu menggunakan unlink('full file path');
akan menghapus file tetapi saya ingin melakukan 2 cara magento . kondisi ketika Pengguna checked
menghapus checkbox
.
Jawaban:
Pertanyaan yang sangat penting seperti dalam pengalaman saya, ketika mengirimkan ekstensi untuk pasar, validasi menghasilkan kesalahan terkait penggunaan metode tersebut secara langsung. Saya telah meneliti dan menemukan solusi berikut.
menyuntikkan ini \Magento\Framework\Filesystem\Driver\File $file
di konstruktor Anda
(pastikan untuk mendeklarasikan variabel level kelas yaitu, protected $_file;
)
dan kemudian Anda dapat memiliki akses ke metode yang meliputi: isExists
dandeleteFile
misalnya: dalam konstruktor
public function __construct(\Magento\Backend\App\Action\Context $context,
\Magento\Framework\Filesystem\Driver\File $file){
$this->_file = $file;
parent::__construct($context);
}
dan kemudian dalam metode di mana Anda mencoba untuk menghapus file:
$mediaDirectory = $this->_objectManager->get('Magento\Framework\Filesystem')->getDirectoryRead(\Magento\Framework\App\Filesystem\DirectoryList::MEDIA);
$mediaRootDir = $mediaDirectory->getAbsolutePath();
if ($this->_file->isExists($mediaRootDir . $fileName)) {
$this->_file->deleteFile($mediaRootDir . $fileName);
}
semoga ini membantu.
Jawaban RT baik, tetapi kita tidak harus menggunakan ObjectManager secara langsung dalam contoh.
Alasannya ada di sini " Magento 2: untuk menggunakan atau tidak menggunakan ObjectManager secara langsung ".
Jadi contoh yang lebih baik adalah di bawah ini:
<?php
namespace YourNamespace;
use Magento\Backend\App\Action;
use Magento\Backend\App\Action\Context;
use Magento\Framework\Filesystem\Driver\File;
use Magento\Framework\Filesystem;
use Magento\Framework\App\Filesystem\DirectoryList;
class Delete extends Action
{
protected $_filesystem;
protected $_file;
public function __construct(
Context $context,
Filesystem $_filesystem,
File $file
)
{
parent::__construct($context);
$this->_filesystem = $_filesystem;
$this->_file = $file;
}
public function execute()
{
$fileName = "imageName";// replace this with some codes to get the $fileName
$mediaRootDir = $this->_filesystem->getDirectoryRead(DirectoryList::MEDIA)->getAbsolutePath();
if ($this->_file->isExists($mediaRootDir . $fileName)) {
$this->_file->deleteFile($mediaRootDir . $fileName);
}
// other logic codes
}
}