jak usunąć plik lub obraz w Magento 2. Wiem, że użycie unlink('full file path');
spowoduje usunięcie pliku, ale chcę zrobić Magento 2 sposób . warunek, kiedy Użytkownik checked
usunie checkbox
.
9
Bardzo ważne pytanie, tak jak z mojego doświadczenia, podczas przesyłania rozszerzenia na rynek, walidacja generowała błędy dotyczące bezpośredniego korzystania z takiej metody. Poszukałem i znalazłem następujące rozwiązanie.
wstrzyknij to \Magento\Framework\Filesystem\Driver\File $file
do swojego konstruktora
(pamiętaj, aby zadeklarować zmienną na poziomie klasy, tj. protected $_file;
)
a następnie możesz uzyskać dostęp do metod, które obejmują: isExists
ideleteFile
na przykład: w konstruktorze
public function __construct(\Magento\Backend\App\Action\Context $context,
\Magento\Framework\Filesystem\Driver\File $file){
$this->_file = $file;
parent::__construct($context);
}
a następnie w metodzie, w której próbujesz usunąć plik:
$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);
}
mam nadzieję że to pomoże.
Odpowiedź RT jest dobra, ale nie powinniśmy używać ObjectManager bezpośrednio w tym przykładzie.
Powodem jest tutaj „ Magento 2: używać lub nie używać bezpośrednio menedżera obiektów ObjectManager ”.
Lepszy przykład znajduje się poniżej:
źródło