Всякий раз, коли ви працюєте над 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 в клас Блоку.
Анонімність та розділення акаунтів є базовою потребою для співробітників, що займаються арбітражем трафіку, SMM чи…
Деякі запчастини в автомобілях ми експлуатуємо доти, доки вони повністю не вийдуть з ладу. Однак…
В 2026 році конкуренція в e-commerce стала жорсткою як ніколи. Клієнти вибирають не тільки за…
Урожай найчастіше втрачають не через аномальні зміни погоди, а через дрібні рішення, які здаються неважливими.…
Музичні інструменти супроводжують людство протягом усієї його історії. Вони з'явилися задовго до писемності і стали…
VR-продакшн сьогодні є окремим напрямком у цифровому виробництві, що поєднує технології віртуальної реальності, 3D-графіку, програмування,…