Magento 2: छवि या फ़ाइल को हटाने के लिए कैसे


9

मैगेंटो में फाइल या इमेज को कैसे डिलीट करें 2. मुझे पता है unlink('full file path');कि फाइल को डिलीट करने से मैं डिलीट हो जाऊंगा लेकिन मैं 2 तरीके से मैगेंटो करना चाहता हूं । हालत जब उपयोगकर्ता checkedको हटा दें checkbox

जवाबों:


15

मेरे अनुभव के अनुसार बहुत महत्वपूर्ण सवाल है, जब बाज़ार के लिए एक एक्सटेंशन सबमिट करते हैं, तो सत्यापन ने सीधे इस तरह की विधि का उपयोग करने के बारे में त्रुटियों को उत्पन्न किया। मैंने शोध किया है और निम्नलिखित समाधान पाया है।

इसे \Magento\Framework\Filesystem\Driver\File $fileअपने कंस्ट्रक्टर में इंजेक्ट करें

(कक्षा स्तर चर घोषित करने के लिए सुनिश्चित करें protected $_file;) ,

और फिर आप उन विधियों तक पहुंच सकते हैं जिनमें शामिल हैं: isExistsऔरdeleteFile

उदाहरण के लिए: कंस्ट्रक्टर में

public function __construct(\Magento\Backend\App\Action\Context $context, 
            \Magento\Framework\Filesystem\Driver\File $file){

        $this->_file = $file;
        parent::__construct($context);
}

और फिर उस विधि में जहां आप एक फ़ाइल को हटाने की कोशिश कर रहे हैं:

$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);
}

उम्मीद है की यह मदद करेगा।


फिर कैसे पाएं पूर्ण मार्ग?
क़ैसर सत्ती

मुझे उत्तर संपादित करने दें।
आरटी

2
यह एक सम्मोहन की तरह काम करता है !!
नलिन सावलिया

6

RT का उत्तर अच्छा है, लेकिन हमें ObjectManager का उपयोग सीधे उदाहरण में नहीं करना चाहिए

इसका कारण यहाँ है " Magento 2: का उपयोग करने या नहीं का उपयोग करने के लिए ObjectManager सीधे "।

तो बेहतर उदाहरण नीचे है:

<?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
    }
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.