.phtml 파일의 Magento 2.1 미디어 경로


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

Magento의 코딩 표준에 따라 Object Manager 사용을 권장하지 않습니다. 템플릿 파일에서 다음 코드를 사용하여 미디어 URL을 얻을 수 있습니다.

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

Magento의 권장 사항에 따라 웹 사이트의 문서 루트는 pub개발 중에 디렉토리 외부에 있어야하며 pub프로덕션으로 이동할 때 디렉토리 내부에 있어야합니다 .

따라서 pub템플릿 파일에서 미디어 URL을 가져 오는 동안 디렉토리를 하드 코딩 할 수 없습니다 . 위의 코드는 문서 루트 위치에 상관없이 올바른 미디어 URL을 제공합니다.


1
+1 Object Manager 용으로 20 줄의 코드를 추가하는 것에 대해 생각하는 것은 끔찍한 일입니다.
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;
}

이제 phtmlgetMediaUrl() 에서 함수 를 호출하십시오.

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

0

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

이 코드를 확인하십시오. 미디어 경로를 제공합니다.


2
_storeManager 속성이 보호되어 있기 때문에 .phtml 파일에서 작동하지 않습니다
simonthesorcerer
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.