Categories: Мадженто 2

Код для получения ссылки сайта в Magento 2

Всякий раз, когда вы работаете над 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 в класс Блока.

 

Share
Published by
SebWeo
Tags: Magento2

Recent Posts

Как выбрать мастера для перетяжки мебели?

Выбор мастера для ремонта и перетяжки мебели — задача, которая требует вдумчивого подхода. Ведь от…

2 дня ago

Что лучше выбрать для хостинга: сервер VPS Windows или VPS Linux?

Выбор идеального хостинга под свой сайт может быть довольно запутанным делом, особенно когда существует так…

1 неделя ago

Лоуренс Питер

Чтобы избегать ошибок, нужно набираться опыта; чтобы набираться опыта, надо делать ошибки Лоуренс Питер  

2 недели ago

Что такое Черное СЕО (Black Hat SEO) — вся нужная информация

Краткое определение Черного SEO Черное СЕО (или Черная оптимизация) — это любая практика, целью которой…

2 недели ago

Права категории C: кому они нужны и как их получить?

Получение водительских прав категории C открывает двери к профессиональной деятельности, связанной с управлением грузовыми автомобилями.…

3 недели ago

Уилл Смит

Хорошие люди принесут вам счастье, плохие люди наградят вас опытом, худшие — дадут вам урок,…

3 недели ago