ম্যাজেন্টো 2 এ পিটিএইচটিএমএল ফাইলের মাধ্যমে মিডিয়া ডিরেক্টরি পাথ কীভাবে পাবেন?


14

মিডিয়া ডিরেক্টরি পাথ পেতে নীচের পদ্ধতিটি ব্যবহার করুন , তবে এটি একটি ত্রুটি প্রদান করে।

$om = \Magento\Core\Model\ObjectManager::getInstance();

$directoryList = $om->get(\Magento\App\Filesystem\DirectoryList::class);

$pubMediaDir = $directoryList->getPath(\Magento\App\Filesystem\DirectoryList::MEDIA);

সমাধান পেতে আমাকে দয়া করে সহায়তা করুন।


1
আপনার প্রশ্নটি আমার কাছে পরিষ্কার নয়। আপনি আরও বিস্তারিত ব্যাখ্যা করতে পারেন? অতিরিক্ত হিসাবে, আমরা এক নজরে
খোয়া ট্রুংডিনহ

উত্তর:


23

সরাসরি object managerব্যবহার না করে এটি পছন্দ করুন like

use Magento\Framework\App\Filesystem\DirectoryList;

protected $_filesystem;

public function __construct(
    \Magento\Framework\Filesystem $filesystem
)
{
    $this->_filesystem = $filesystem;
}

এখন আপনি মিডিয়া পাথ করতে পারেন,

$mediapath = $this->_filesystem->getDirectoryRead(DirectoryList::MEDIA)->getAbsolutePath();

সম্পাদনা

আপনি যদি কোনও অবজেক্ট ম্যানেজার ব্যবহার করতে চান তবে আপনি এটি ব্যবহার করতে পারেন (প্রস্তাবিত নয়)

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();

$fileSystem = $objectManager->create('\Magento\Framework\Filesystem');
$mediaPath = $fileSystem->getDirectoryRead(\Magento\Framework\App\Filesystem\DirectoryList::MEDIA)->getAbsolutePath();
echo $mediaPath;
exit;

এটি এই জাতীয় ত্রুটিটি ফিরিয়ে দেয় "আনকাচড টাইপ এরিয়ার: আর্গুমেন্ট 2 নেমস্পেসে চলে গেছে \ মডিউল \ কন্ট্রোলার \ সূচি \ আপলোড :: __ কনস্ট্রাক্ট () অবশ্যই ম্যাজেন্টো \ ফ্রেমওয়ার্ক \ ফাইল সিস্টেমের উদাহরণ হতে হবে, কিছুই দেওয়া হয়নি"
রিতা জোসে

হ্যাঁ, সংকলন করার চেষ্টা করুন এবং আবার চেষ্টা করুন :)
কিউর শাহ 29:47

ডি: সংকলনটি সম্পন্ন হয়েছে, তবে এটি আবার একটি ত্রুটি দেয় :( "পুনরুদ্ধারযোগ্য ত্রুটি: শ্রেণীর অবজেক্ট age ফ্রেমওয়ার্ক \ ফাইলসিস্টেম \ ডিরেক্টরি \ পড়ুন স্ট্রিং / opt / lampp / htdocs / magento214 / অ্যাপ / কোড / নেমস্পেসে রূপান্তর করা যায়নি" / কাস্টমটাব / নিয়ন্ত্রণকারী / ইন্ডেক্স / আপলোড.এফপি 18 লাইনে "
রিতা জোসে

আমার সম্পাদনা দেখুন, আপনি যদি সরাসরি অবজেক্ট ম্যানেজারটি ব্যবহার করতে চান তবে @ রিটাজোজ
কিউর শাহ

বাহ: ডি .. অনেক অনেক ধন্যবাদ .. সম্পাদিতটি ঠিকঠাক কাজ করে :)
রিতা জোসে

7

প্রথমে আপনাকে আপনার ম্যাজেন্টো 2 কনস্ট্রাক্টরে ডিরেক্টরীলিস্ট ক্লাসটি ইনজেক্ট করতে হবে:

public function __construct(\Magento\Framework\View\Element\Template\Context $context, \Magento\Framework\App\Filesystem\DirectoryList $directory_list, array $data = []) {
     parent::__construct($context, $data);
     $this->directory_list = $directory_list;  
 }

এর পরে বিভিন্ন পাথ পুনরুদ্ধার করার জন্য আপনার ডিরেক্টরি ডিরেক্টরি তালিকাতে অ্যাক্সেস পাবেন। উদাহরণস্বরূপ, মিডিয়া ফোল্ডারটি পেতে আপনি ব্যবহার করতে পারেন:

$this->directory_list->getPath('media');

অন্যান্য সম্ভাব্য ব্যবহারগুলি হ'ল:

/* Get app folder */
$this->directory_list->getPath('app');

/* Get configuration folder */
$this->directory_list->getPath('etc');

/* Get libraries or third-party components folder */
$this->directory_list->getPath('lib_internal');

/* Get libraries/components that need to be accessible publicly through web-server folder */
$this->directory_list->getPath('lib_web');

/* Get public folder */
$this->directory_list->getPath('pub');

/* Get static folder */
$this->directory_list->getPath('static');

/* Get var folder */
$this->directory_list->getPath('var');

/* Get temporary files folder */
$this->directory_list->getPath('tmp');

/* Get file system caching directory (if file system caching is used) */
$this->directory_list->getPath('cache');

/* Get logs of system messages and errors */
$this->directory_list->getPath('log');

/* Get file system session directory (if file system session storage is used) */
$this->directory_list->getPath('session');

/* Get directory for Setup application*/
$this->directory_list->getPath('setup');

/* Get Dependency injection related file directory */
$this->directory_list->getPath('di');

/* Relative directory key for generated code*/
$this->directory_list->getPath('generation');

/* Temporary directory for uploading files by end-user */
$this->directory_list->getPath('upload');

/* Directory to store composer related files (config, cache etc.) in case if composer runs by Magento Application */
$this->directory_list->getPath('composer_home');

/* A suffix for temporary materialization directory where pre-processed files will be written (if necessary) */
$this->directory_list->getPath('view_preprocessed');

/* Get template minification dir */
$this->directory_list->getPath('html');

এটি মিডিয়ার ব্রাউজার ইউআরএল ফিরিয়ে দেয় ... আমার মিডিয়া ফোল্ডারের পাথ দরকার
রিতা জোসে

আমার আপডেট করা উত্তর দেখুন দয়া করে।
মোহিত কুমার অরোরা

কাজ না করা পর্যন্ত।
সরফরাজ সিপাই

আপনাকে ধন্যবাদ_মহিতকুমারআরোরা - আমার দিনটি বাঁচিয়েছে। উপরের সমাধানটি মনোমুগ্ধকর মতো কাজ করেছিল
আবিদ মালিক

6

.Phtml ফাইলটিতে মিডিয়া পাথ পেতে কোডের নীচে ব্যবহার করুন।

$this->getUrl('pub/media');

অবজেক্টম্যানের দ্বারা

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
echo $objectManager->get('Magento\Store\Model\StoreManagerInterface')
                    ->getStore()
                    ->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_MEDIA);

3
এটি ব্রাউজারের ইউআরএল পথটি ফিরিয়ে দেয় .. আমার মিডিয়া ফোল্ডারের পাথ দরকার
রিতা জোস

6

StoreManagerInterface ব্যবহার করে এটি পাওয়ার চেষ্টা করুন

use Magento\Store\Model\StoreManagerInterface;
protected $storeManager;

public function __construct(
    StoreManagerInterface $storeManager,
)
{
    $this->storeManager = $storeManager;
}

এখন মিডিয়া ইউআরএল ব্যবহার করে পান

 $mediaUrl = $this->storeManager->getStore()->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_MEDIA);

কাজ করছে না .....
সরফরাজ সিপাই
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.