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 в класс Блока.

 

Tolyanich

Share
Published by
Tolyanich
Tags: Magento2

Recent Posts

Как работает электронная книга

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

12 часов ago

Робин Шарма

Действуй так, словно неудача просто невозможна, а успех обеспечен Робин Шарма  

6 дней ago

Уроки SQL — как найти повторяющиеся записи (дубли) в базе данных

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

1 неделя ago

Ремонт или покупка новой шины? Варианты ремонта резины

Заплатка на шине, как правило, - это простой и дешевый вариант по сравнению с покупкой…

2 недели ago

Гигиена кота: основные правила и рекомендации ветеринаров

Коты относятся к чистоплотным животным — приблизительно половину своей жизни они тратят на «гигиенические процедуры».…

3 недели ago

Брюс Ли

Дисциплина — это не ограничение свободы. Это отсечение всего лишнего Брюс Ли  

3 недели ago