Đường dẫn phương tiện Magento 2.1 trong tệp .phtml


9

Cách nhận đường dẫn phương tiện trong Magento 2.1. Tôi đã thử rất nhiều tùy chọn nhưng nó không hoạt động?

Tôi muốn hiển thị hình ảnh ở mặt trước bên trong tệp .phtml.


Bạn có thể cho chúng tôi thấy những gì bạn đã cố gắng cho đến nay và kết quả liên quan là gì?
Julien Lachal

Câu trả lời:


11

bạn có thể nhận đường dẫn phương tiện bằng phương thức $ object

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

phương pháp nhà máy

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

trong tập tin phtml

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

11

Việc sử dụng Trình quản lý đối tượng không được khuyến khích theo tiêu chuẩn mã hóa của Magento. Trong tệp mẫu, chúng tôi có thể nhận URL phương tiện bằng mã sau:

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

Theo khuyến nghị của Magento, thư mục gốc của trang web của bạn phải nằm ngoài pubthư mục trong quá trình phát triển và nó sẽ nằm trong pubthư mục khi được chuyển sang sản xuất.

Do đó, chúng tôi không thể mã cứng pubthư mục trong khi nhận URL phương tiện trong các tệp mẫu. Đoạn mã trên sẽ cung cấp cho bạn URL phương tiện chính xác bất kể vị trí gốc của tài liệu của bạn.


1
+1 Suy nghĩ về việc thêm 20 dòng mã cho Trình quản lý đối tượng nghe có vẻ khủng khiếp chỉ để xem xét.
Mohammed Joraid

6

Nhận đường dẫn phương tiện bằng objectManager

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

Nhận đường dẫn phương tiện bằng cách tiêm phụ thuộc

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

Bây giờ gọi hàm getMediaUrl()trong phtml

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

0

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

Vui lòng kiểm tra mã này. Nó sẽ cung cấp cho bạn con đường truyền thông.


2
Điều này không hoạt động trong tệp .phtml vì thuộc tính _storeManager được bảo vệ
simonthesorcerer
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.