ম্যাজেন্টোতে ফাইল বা চিত্র কীভাবে মুছবেন 2 আমি জানি unlink('full file path');
ফাইলটি মুছে ফেলা হবে তবে আমি ম্যাজেন্টো 2 উপায়ে করতে চাই । শর্ত যখন ব্যবহারকারী checked
মুছুন checkbox
।
ম্যাজেন্টোতে ফাইল বা চিত্র কীভাবে মুছবেন 2 আমি জানি unlink('full file path');
ফাইলটি মুছে ফেলা হবে তবে আমি ম্যাজেন্টো 2 উপায়ে করতে চাই । শর্ত যখন ব্যবহারকারী checked
মুছুন checkbox
।
উত্তর:
আমার অভিজ্ঞতার মতো খুব গুরুত্বপূর্ণ প্রশ্ন, মার্কেটপ্লেসের জন্য কোনও এক্সটেনশন জমা দেওয়ার সময়, এই জাতীয় পদ্ধতিটি সরাসরি ব্যবহারের ক্ষেত্রে বৈধতা ত্রুটি তৈরি করে। আমি গবেষণা করেছি এবং নিম্নলিখিত সমাধান পেয়েছি।
\Magento\Framework\Filesystem\Driver\File $file
এটি আপনার কনস্ট্রাক্টরে ইনজেক্ট করুন
(ক্লাস স্তরের ভেরিয়েবল ঘোষণা করার বিষয়টি নিশ্চিত করুন, যেমন protected $_file;
)
এবং তারপরে আপনি যে পদ্ধতিগুলির অন্তর্ভুক্ত রয়েছে সেগুলিতে অ্যাক্সেস পেতে পারেন isExists
anddeleteFile
উদাহরণস্বরূপ: নির্মাণকারী মধ্যে
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: সরাসরি অবজেক্টম্যানেজারটি ব্যবহার বা না করা "।
আরও ভাল উদাহরণ নীচে:
<?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
}
}