como excluir arquivo ou imagem no magento 2. Eu sei que o uso unlink('full file path');
excluirá o arquivo, mas eu quero fazer o magento 2 way . condição quando o usuário checked
excluir checkbox
.
como excluir arquivo ou imagem no magento 2. Eu sei que o uso unlink('full file path');
excluirá o arquivo, mas eu quero fazer o magento 2 way . condição quando o usuário checked
excluir checkbox
.
Respostas:
Pergunta muito importante, como na minha experiência, ao enviar uma extensão para o marketplace, a validação gerou erros em relação ao uso desse método diretamente. Eu pesquisei e encontrei a seguinte solução.
injete isso \Magento\Framework\Filesystem\Driver\File $file
no seu construtor
(certifique-se de declarar variável no nível da classe, ou seja, protected $_file;
)
e então você pode ter acesso aos métodos que incluem: isExists
edeleteFile
por exemplo: no construtor
public function __construct(\Magento\Backend\App\Action\Context $context,
\Magento\Framework\Filesystem\Driver\File $file){
$this->_file = $file;
parent::__construct($context);
}
e depois no método em que você está tentando excluir um arquivo:
$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);
}
espero que isto ajude.
A resposta do RT é boa, mas não devemos usar o ObjectManager diretamente no exemplo.
O motivo está aqui " Magento 2: usar ou não usar o ObjectManager diretamente ".
Então, um exemplo melhor está abaixo:
<?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
}
}