Magento 2.1 Jalur media dalam file .phtml

9

Cara mendapatkan jalur media di Magento 2.1. Saya mencoba banyak pilihan tetapi tidak berhasil?

Saya ingin menampilkan gambar di front-end di dalam file .phtml.

Vishal Tanna
sumber
Bisakah Anda menunjukkan kepada kami apa yang telah Anda coba sejauh ini dan apa hasil yang terkait?
Julien Lachal

Jawaban:

11

Anda bisa mendapatkan jalur media dengan metode $ objek

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

metode pabrik

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

dalam file phtml

<?php echo $block->getMediaUrl(); ?>
Qaisar Satti
sumber
11

Penggunaan Object Manager tidak disarankan sesuai standar pengkodean Magento. Dalam file template, kita bisa mendapatkan URL media menggunakan kode berikut:

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

Sesuai rekomendasi Magento, akar dokumen situs web Anda harus berada di luar pubdirektori selama pengembangan dan harus di dalam pubdirektori ketika dipindahkan ke produksi.

Karenanya kami tidak dapat membuat kode dari pubdirektori saat mendapatkan URL media dalam file templat. Kode di atas akan memberi Anda URL media yang benar terlepas dari lokasi root dokumen Anda.

N. Karthic Kannan
sumber
1
+1 Berpikir tentang menambahkan 20 baris kode untuk Object Manager terdengar mengerikan hanya untuk dipertimbangkan.
Mohammed Joraid
6

Dapatkan jalur media dengan objectManager

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

Dapatkan jalur media dengan Injeksi Ketergantungan

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

Sekarang panggil fungsi getMediaUrl()dalam phtml

<?php echo $block->getMediaUrl(); ?>
Pangeran Patel
sumber
0

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

Silakan periksa kode ini. Ini akan memberi Anda jalur media.

Mayur
sumber
2
Ini tidak berfungsi dalam file .phtml karena properti _storeManager dilindungi
simonthesorcerer