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

Использование запросов WP_Query в WordPress — часть 3 (основные функции класса)

Этот урок является продолжением серии о работе с запросами в базу данных WP_Query в ВордПресс.…

1 день ago

Григорий Сковорода

Как лекарство не всегда приятно, так и истина бывает сурова Григорий Сковорода  

4 дня ago

Использование запросов WP_Query в WordPress – часть 2 (обзор цикла)

Этот урок является продолжением серии о работе с запросами к базе данных WP_Query в ВордПресс.…

5 дней ago

5 плагинов, которые сделают ваш WordPress-сайт идеальным в 2025 году

Без плагинов WordPress – просто чистый лист. Чтобы сайт работал быстро, был безопасным и привлекательным,…

6 дней ago

Использование запросов WP_Query в WordPress в теории и примерах — часть 1 (введение)

Класс WP_Query — это мощный инструмент, с помощью которого можно максимально контролировать отправку запросов к…

1 неделя ago

Марк Аврелий

Твои мысли становятся твоей жизнью Марк Аврелий  

1 неделя ago