Всякий раз, когда вы работаете над 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 в класс Блока.
Выбор рабочей машины для веб-разработчика или администратора серверов — является всегда компромиссом между портативностью, автономностью…
Исчез свет и вместе с ним мгновенно исчезла связь с окружающим миром? Это знакомая и…
Что вообще случилось с поиском в интернете? Я не побоюсь сказать это вслух: произошла настоящая…
Представьте, что вас внесли в черный список элитного клуба. Если вы подойдете к фейс-контролю лично…
Анонимность и разделение аккаунтов является базовой потребностью для сотрудников, занимающихся арбитражем трафика, SMM или мультиаккаунтингом.…
Некоторые запчасти в автомобилях мы эксплуатируем до того момента, пока они полностью не выйдут из…