Magento 2.1 .phtml dosyasındaki medya yolu


9

Magento'da medya yolu nasıl elde edilir 2.1. Çok seçenek denedim ama çalışmıyor?

Görüntüyü ön uçta .phtml dosyası içinde görüntülemek istiyorum.


Şimdiye kadar ne denediğinizi ve ilişkili sonuçların neler olduğunu bize gösterebilir misiniz?
Julien Lachal

Yanıtlar:


11

$ object yöntemi ile medya yolu alabilirsiniz

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

fabrikalar yöntemi

<?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;
        }
    }
    ........
?>

içinde phtml dosyası

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

11

Nesne Yöneticisinin kullanımı Magento'nun kodlama standartlarına göre önerilmez. Bir şablon dosyasında, medya URL'sini aşağıdaki kodu kullanarak alabiliriz:

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

Magento'nun tavsiyesine göre, web sitenizin belge kökü pubgeliştirme sırasında dizinin dışında olmalı pubve üretime geçtiğinde dizinin içinde olmalıdır .

Bu nedenle pub, şablon dosyalarında medya URL'si alırken dizini kodlayamayız. Yukarıdaki kod, doküman kök konumunuzdan bağımsız olarak size doğru medya URL'sini verecektir.


1
+1 Object Manager için 20 satır kod eklemeyi düşünmek sadece göz önünde bulundurulması korkunç geliyor.
Muhammed Joraid

7

Ortam yolunu objectManager ile alın

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

Bağımlılık Enjeksiyonu ile medya yolunu alma

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

Şimdi işlevi çağırmak getMediaUrl()içinde phtml

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

0

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

Lütfen bu kodu kontrol edin. Size medya yolu verecektir.


2
_StoreManager özelliği korunduğu için bu bir .phtml dosyasında çalışmaz
simonthesorcerer
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.