Комплексное руководство по получению базового URL-адреса в Magento 2

В Magento 2 получение базового URL-адреса является общим требованием для различных задач разработки. Если вам нужно создавать динамические ссылки или получать доступ к ресурсам в вашем магазине Magento 2, важно понимать различные методы получения базового URL-адреса. В этой статье мы рассмотрим несколько подходов, сопровождаемых примерами кода, которые помогут вам получить базовый URL-адрес в Magento 2.

Метод 1: использование \Magento\Store\Model\StoreManagerInterface
Пример кода:

use Magento\Store\Model\StoreManagerInterface;
...
protected $storeManager;
public function __construct(
    StoreManagerInterface $storeManager
) {
    $this->storeManager = $storeManager;
}
public function getBaseUrl()
{
    $baseUrl = $this->storeManager->getStore()->getBaseUrl();
    return $baseUrl;
}

Метод 2: использование \Magento\Framework\UrlInterface
Пример кода:

use Magento\Framework\UrlInterface;
...
protected $urlBuilder;
public function __construct(
    UrlInterface $urlBuilder
) {
    $this->urlBuilder = $urlBuilder;
}
public function getBaseUrl()
{
    $baseUrl = $this->urlBuilder->getBaseUrl();
    return $baseUrl;
}

Метод 3: доступ к базовому URL-адресу через диспетчер объектов
Пример кода:

use Magento\Framework\App\ObjectManager;
...
$objectManager = ObjectManager::getInstance();
$storeManager = $objectManager->get('\Magento\Store\Model\StoreManagerInterface');
$baseUrl = $storeManager->getStore()->getBaseUrl();

Метод 4. Прямой доступ к базовому URL-адресу из конфигурации.
Пример кода:

use Magento\Framework\App\Config\ScopeConfigInterface;
...
protected $scopeConfig;
public function __construct(
    ScopeConfigInterface $scopeConfig
) {
    $this->scopeConfig = $scopeConfig;
}
public function getBaseUrl()
{
    $baseUrl = $this->scopeConfig->getValue('web/unsecure/base_url');
    return $baseUrl;
}

Метод 5. Получение базового URL-адреса с помощью вспомогательного класса
Пример кода:

use Magento\Framework\App\Helper\Context;
use Magento\Store\Model\StoreManagerInterface;
...
protected $storeManager;
protected $context;
public function __construct(
    Context $context,
    StoreManagerInterface $storeManager
) {
    $this->context = $context;
    $this->storeManager = $storeManager;
}
public function getBaseUrl()
{
    $baseUrl = $this->context->getUrlBuilder()->getBaseUrl();
    return $baseUrl;
}

В этой статье мы рассмотрели несколько методов получения базового URL-адреса в Magento 2. Используя эти подходы, вы можете получить базовый URL-адрес в соответствии с вашими конкретными требованиями. Независимо от того, предпочитаете ли вы использовать интерфейс Store Manager, интерфейс URL-адреса, диспетчер объектов или конфигурацию, теперь у вас есть множество вариантов получения базового URL-адреса в Magento 2.