Коварная война россии против Украины. Ориентировочные потери врага
(по состоянию на 22.04.2024)
460260
солдат
348
самолетов
325
вертолетов
7236
танков
13904
ББМ
11736
артиллерия
768
ПВО
1046
РСЗО
15812
машин
26
корабли и катера
Код для получения ссылки сайта в Magento 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 в класс Блока.

 

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *