come eliminare il file o l'immagine in magento 2. So che usando unlink('full file path');
eliminerai il file ma voglio fare magento in 2 modi . condizione quando l'utente checked
elimina checkbox
.
come eliminare il file o l'immagine in magento 2. So che usando unlink('full file path');
eliminerai il file ma voglio fare magento in 2 modi . condizione quando l'utente checked
elimina checkbox
.
Risposte:
Domanda molto importante come nella mia esperienza, quando ho presentato un'estensione per il marketplace, la convalida ha generato errori relativi all'utilizzo diretto di tale metodo. Ho studiato e trovato la seguente soluzione.
iniettalo \Magento\Framework\Filesystem\Driver\File $file
nel tuo costruttore
(assicurati di dichiarare la variabile di livello di classe, cioè, protected $_file;
)
e quindi puoi avere accesso ai metodi che includono: isExists
edeleteFile
per esempio: nel costruttore
public function __construct(\Magento\Backend\App\Action\Context $context,
\Magento\Framework\Filesystem\Driver\File $file){
$this->_file = $file;
parent::__construct($context);
}
e quindi nel metodo in cui stai cercando di eliminare un 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);
}
spero che sia di aiuto.
La risposta di RT è buona, ma non dovremmo usare l' ObjectManager direttamente nell'esempio.
Il motivo è qui " Magento 2: utilizzare o non utilizzare direttamente l'ObjectManager ".
Quindi un esempio migliore è di seguito:
<?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
}
}