comment supprimer un fichier ou une image dans magento 2. Je sais que l'utilisation unlink('full file path');
supprimera le fichier mais je veux faire magento 2 . condition lorsque l'utilisateur checked
la supprimer checkbox
.
comment supprimer un fichier ou une image dans magento 2. Je sais que l'utilisation unlink('full file path');
supprimera le fichier mais je veux faire magento 2 . condition lorsque l'utilisateur checked
la supprimer checkbox
.
Réponses:
Question très importante comme dans mon expérience, lors de la soumission d'une extension pour le marché, la validation a généré des erreurs concernant l'utilisation directe d'une telle méthode. J'ai recherché et trouvé la solution suivante.
injectez ceci \Magento\Framework\Filesystem\Driver\File $file
dans votre constructeur
(assurez-vous de déclarer la variable au niveau de la classe, c'est-à-dire protected $_file;
)
et puis vous pouvez avoir accès aux méthodes qui comprennent: isExists
etdeleteFile
par exemple: dans constructeur
public function __construct(\Magento\Backend\App\Action\Context $context,
\Magento\Framework\Filesystem\Driver\File $file){
$this->_file = $file;
parent::__construct($context);
}
puis dans la méthode où vous essayez de supprimer un fichier:
$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);
}
J'espère que cela t'aides.
La réponse de RT est bonne, mais nous ne devons pas utiliser l' ObjectManager directement dans l'exemple.
La raison en est ici " Magento 2: utiliser ou ne pas utiliser directement l'ObjectManager ".
Un meilleur exemple est donc ci-dessous:
<?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
}
}