Код для отримання URL сайту в Magento 2
Всякий раз, коли ви працюєте над Magento2, вам потрібно буде часто отримувати базовий URL (посилання на головну сторінку інтернет-магазину), посилання на папку з картинками (media), або певну статичну URL-адресу. З цієї статті ви дізнаєтеся, як можна легко отримати 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
в клас Блоку.
Останні пости
Як вибрати ідеальний ноутбук: Повний гайд
Вибір ноутбука може бути складним завданням у світі, де ринок переповнений варіантами на будь-який смак… Читати далі
Томас Едісон
Наш великий недолік в тому, що ми занадто швидко опускаємо руки. Найбільш діючий метод досягти… Читати далі
Найкрасивіші та найбільш вражаючі мости з усього світу (ТОП-10)
Міст — це щось більше, ніж просто споруда, яка поєднує два береги. Для того, щоб… Читати далі
Соломон
Життя нас вчить, що свою пару ми пізнаємо, коли розлучаємося, своїх братів ми пізнаємо, коли… Читати далі
Річард Бах
Жодне бажання не дається тобі окремо від сили, що дозволяє його здійснити. Хоча, можливо, для… Читати далі