cómo eliminar un archivo o una imagen en magento 2. Sé que el uso unlink('full file path');
eliminará el archivo, pero quiero hacer magento de 2 maneras . condición cuando el usuario checked
la elimina checkbox
.
cómo eliminar un archivo o una imagen en magento 2. Sé que el uso unlink('full file path');
eliminará el archivo, pero quiero hacer magento de 2 maneras . condición cuando el usuario checked
la elimina checkbox
.
Respuestas:
Pregunta muy importante, como en mi experiencia, al enviar una extensión para el mercado, la validación generó errores con respecto al uso de dicho método directamente. Investigué y encontré la siguiente solución.
inyecta esto \Magento\Framework\Filesystem\Driver\File $file
en tu constructor
(asegúrese de declarar la variable de nivel de clase, es decir, protected $_file;
)
y luego puede tener acceso a los métodos que incluyen: isExists
ydeleteFile
por ejemplo: en constructor
public function __construct(\Magento\Backend\App\Action\Context $context,
\Magento\Framework\Filesystem\Driver\File $file){
$this->_file = $file;
parent::__construct($context);
}
y luego en el método en el que intentas eliminar un archivo:
$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 esto ayude.
La respuesta de RT es buena, pero no debemos usar ObjectManager directamente en el ejemplo.
La razón está aquí " Magento 2: usar o no usar el ObjectManager directamente ".
Entonces, el mejor ejemplo es el siguiente:
<?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
}
}