Magento 2.1 Media path ในไฟล์. phtml


9

วิธีรับเส้นทางสื่อใน Magento 2.1 ฉันลองตัวเลือกมากมาย แต่มันไม่ทำงาน

ฉันต้องการแสดงภาพในส่วนหน้าภายในไฟล์. phtml


คุณสามารถแสดงให้เราเห็นสิ่งที่คุณได้ลองมาแล้วและผลลัพธ์ที่เกี่ยวข้องคืออะไรได้บ้าง
Julien Lachal

คำตอบ:


11

คุณสามารถรับเส้นทางสื่อด้วยวิธี $ object

$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

การใช้งาน Object Manager นั้นไม่ได้รับการสนับสนุนตามมาตรฐานการเข้ารหัสของ Magento ในไฟล์เทมเพลตเราสามารถรับ URL สื่อโดยใช้รหัสต่อไปนี้:

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

ตามคำแนะนำของ Magento รากเอกสารของเว็บไซต์ของคุณควรอยู่นอกpubไดเรกทอรีในระหว่างการพัฒนาและควรอยู่ในpubไดเรกทอรีเมื่อย้ายไปผลิต

ดังนั้นเราจึงไม่สามารถเขียนโค้ดpubไดเรกทอรีในขณะที่รับ URL สื่อในไฟล์เทมเพลตได้ รหัสด้านบนจะให้ URL สื่อที่ถูกต้องโดยไม่คำนึงถึงที่ตั้งของเอกสารของคุณ


1
+1 คิดเกี่ยวกับการเพิ่มโค้ด 20 บรรทัดสำหรับ Object Manager ฟังดูน่าพิจารณามาก
Mohammed Joraid

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

ตอนนี้เรียกใช้ฟังก์ชันgetMediaUrl()ในPHTML

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

0

$ this -> _ storeManager-> getStore () -> getBaseUrl (\ วีโอไอพี \ Framework \ UrlInterface :: URL_TYPE_MEDIA);

กรุณาตรวจสอบรหัสนี้ มันจะให้เส้นทางสื่อ


2
นี้ไม่ได้ทำงานในไฟล์ .phtml เพราะ _storeManager คุณสมบัติได้รับการคุ้มครอง
SimonTheSorcerer
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.