ম্যাজেন্টো 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.