Всякий раз, когда вы работаете над Magento2, вам нужно будет часто получать базовый URL (ссылку на главную страницу интернет-магазина), ссылку на папку с картинками (media), либо какой-то статический URL-адрес. Из этой статьи вы узнаете, как можно легко получить ссылку в Мадженто 2.
В Magento 1.х версий для получения ссылки на главную страницу использовался метод Mage::getBaseUrl();
а в Magento 2.х версий для этого используется немного другой подход.
В Мадженто 2, если вы хотите получить базовый URL сайта, вы можете использовать следующий код:
$this->_storeManager->getStore()->getBaseUrl();
Где $this->_storeManager
– это экземпляр класса \Magento\Store\Model\StoreManagerInterface
Этот код даст вам такой результат:
https://site.com (если включено SEO URL Rewrite) или https://site.com/index.php (если SEO URL Rewrite не включено)
Чтобы получить базовый URL без index.php
, используйте код:
$this->_storeManager->getStore()->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_WEB);
Для получения URL-адреса к папке с картинками (media
), используйте код:
$this->_storeManager->getStore()->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_MEDIA);
Для доступа к $this->_storeManager
, вы должны использовать инъекцию зависимостей класса \Magento\Store\Model\StoreManagerInterface $storeManager
для функции __construct()
в классе Блока, например так:
public $_storeManager; public function __construct( \Magento\Store\Model\StoreManagerInterface $storeManager, ... ) { ... $this->_storeManager = $storeManager; }
ВАЖНО! Данный метод является нерекомендуемым. Его можно использовать только для кратковременных целей разработки.
Чтобы получить базовый адрес сайта:
$objectManager = \Magento\Framework\App\ObjectManager::getInstance(); $storeManager = $objectManager->get('\Magento\Store\Model\StoreManagerInterface'); $storeManager->getStore()->getBaseUrl();
Базовый URL сайта без index.php
:
$objectManager = \Magento\Framework\App\ObjectManager::getInstance(); $storeManager = $objectManager->get('\Magento\Store\Model\StoreManagerInterface'); $storeManager->getStore()->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_WEB);
Использование прямого вызова Менеджера Объектов дает возможность получить базовый URL непосредственно в шаблонах .phtml
:
$objectManager = \Magento\Framework\App\ObjectManager::getInstance(); $storeManager = $objectManager->get('\Magento\Store\Model\StoreManagerInterface'); $storeManager->getStore()->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_WEB);
ВАЖНО! Повторюсь, что прямой вызов Менеджера Объектов – это не очень хорошая идея. Если вы хотите получить базовый URL в .phtml
шаблонах, тогда используйте инъекцию зависимостей класса StoreManagerInterface
в класс Блока.
Содержание статьи Введение: почему цены решают все Что значит сравнение цен с конкурентами 5 причин,…
В последние годы интерес к саунам в Киеве заметно вырос. Это связано не только с…
В современном ритме мегаполиса отдых стал неотъемлемой частью заботы о здоровье и эмоциональном состоянии. Особенно…
В современном мире цифрового маркетинга Facebook (Meta) остается одной из самых мощных платформ для продвижения…
Этот прибор стал незаменимым элементом арсенала представителей множества профессий, но особенно актуален среди военных. Тепловизор…
Постоянный поток новостей, рабочих задач и личных забот часто приводит к тому, что в голове…