Magento 2.1 .phtml फ़ाइल में मीडिया पथ


9

Magento 2.1 में मीडिया पथ कैसे प्राप्त करें। मैंने बहुत सारे विकल्प आज़माए लेकिन यह काम नहीं कर रहा है?

मैं छवि को फ्रंट-एंड के अंदर .phtml फ़ाइल में प्रदर्शित करना चाहता हूं।


क्या आप हमें बता सकते हैं कि आपने अब तक क्या प्रयास किया है और इससे जुड़े परिणाम क्या हैं?
जूलियन लाछल

जवाबों:


11

आप $ ऑब्जेक्ट विधि द्वारा मीडिया पथ प्राप्त कर सकते हैं

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

कारखानों विधि

<?php
    namespace Namespace\Modulename\Block;
    use Magento\Framework\ObjectManagerInterface;

    class Banners extends Template
    {

        protected $objectManager;
        public function __construct( 
            ....... 
            ObjectManagerInterface $objectManager
                       ...) {

                    ...........
                    $this->objectManager = $objectManager;

                    ...............
        }
        public function getMediaUrl(){

            $media_dir = $this->objectManager->get('Magento\Store\Model\StoreManagerInterface')
                ->getStore()
                ->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_MEDIA);

            return $media_dir;
        }
    }
    ........
?>

में phtml फ़ाइल

<?php echo $block->getMediaUrl(); ?>

11

Magento के कोडिंग मानकों के अनुसार ऑब्जेक्ट मैनेजर का उपयोग हतोत्साहित किया जाता है। टेम्प्लेट फ़ाइल में, हम निम्नलिखित कोड का उपयोग करके मीडिया URL प्राप्त कर सकते हैं:

$this->helper('\Magento\Cms\Helper\Wysiwyg\Images')->getBaseUrl()

मैगेंटो की सिफारिश के अनुसार, आपकी वेबसाइट का दस्तावेज़ रूट pubविकास के दौरान बाहरी निर्देशिका होना चाहिए और pubउत्पादन के लिए ले जाने के दौरान यह निर्देशिका के अंदर होना चाहिए ।

इसलिए हम pubटेम्पलेट फ़ाइलों में मीडिया URL प्राप्त करते समय निर्देशिका को हार्ड कोड नहीं कर सकते । उपरोक्त कोड आपको अपने दस्तावेज़ रूट स्थान के बावजूद सही मीडिया URL देगा।


1
+1 ऑब्जेक्ट मैनेजर के लिए कोड की 20 लाइनों को जोड़ने के बारे में सोचना भयानक लगता है।
मोहम्मद जोराड

7

ObjectManager द्वारा मीडिया पथ प्राप्त करें

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

डिपेंडेंसी इंजेक्शन द्वारा मीडिया पथ प्राप्त करें

protected $_storeManager;

public function __construct( 
    ...
    \Magento\Store\Model\StoreManagerInterface $storeManager,
    ...
) {
    ...
    $this->_storeManager = $storeManager;
    ...
}

public function getMediaUrl()
{
    $mediaUrl = $this->_storeManager
                     ->getStore()
                     ->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_MEDIA);
    return $mediaUrl;
}

अब phtmlgetMediaUrl() में फ़ंक्शन को कॉल करें

<?php echo $block->getMediaUrl(); ?>

0

इस $ -> _ storeManager-> getStore () -> getBaseUrl (\ Magento \ फ्रेमवर्क \ UrlInterface :: URL_TYPE_MEDIA);

कृपया इस कोड की जाँच करें। यह आपको मीडिया का रास्ता देगा।


2
इसका कारण यह है _storeManager संपत्ति सुरक्षित है एक .phtml फ़ाइल में काम नहीं करता
simonthesorcerer
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.