답변:
$ 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(); ?>
Magento의 코딩 표준에 따라 Object Manager 사용을 권장하지 않습니다. 템플릿 파일에서 다음 코드를 사용하여 미디어 URL을 얻을 수 있습니다.
$this->helper('\Magento\Cms\Helper\Wysiwyg\Images')->getBaseUrl()
Magento의 권장 사항에 따라 웹 사이트의 문서 루트는 pub
개발 중에 디렉토리 외부에 있어야하며 pub
프로덕션으로 이동할 때 디렉토리 내부에 있어야합니다 .
따라서 pub
템플릿 파일에서 미디어 URL을 가져 오는 동안 디렉토리를 하드 코딩 할 수 없습니다 . 위의 코드는 문서 루트 위치에 상관없이 올바른 미디어 URL을 제공합니다.
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(); ?>
$ this-> _ storeManager-> getStore ()-> getBaseUrl (\ Magento \ Framework \ UrlInterface :: URL_TYPE_MEDIA);
이 코드를 확인하십시오. 미디어 경로를 제공합니다.