Как программно получить веб-адрес корневой папки медиа-данных (картинок)


(Дмитрий Федюк) #1

Magento 2 хранит медиа-данные (в том числе картинки) в папке pub/media .
Расположенная ниже функция возвращает веб-адрес этой папки для текущего магазина системы.
Обычно этот адрес выглядит как http://site.com/pub/media/, однако может быть более сложным (например, если текущий магазин расположен подпути домена или если используется протокол HTTPS).

/** @return string */
function getMediaBaseUrl() {
	/** @var \Magento\Framework\ObjectManagerInterface $om */
	$om = \Magento\Framework\App\ObjectManager::getInstance();
	/** @var \Magento\Store\Model\StoreManagerInterface $storeManager */
	$storeManager = $om->get('Magento\Store\Model\StoreManagerInterface');
	/** @var \Magento\Store\Api\Data\StoreInterface|\Magento\Store\Model\Store $currentStore */
	$currentStore = $storeManager->getStore();
	return $currentStore->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_MEDIA);
}

Обратите внимание, что метод getBaseUrl отсутствует в интерфейсе \Magento\Store\Api\Data\StoreInterface и присутстует лишь в одной конкретной реализации этого интерфейса — \Magento\Store\Model\Store