Якщо вам потрібно отримати поточну URL-адресу у файлі PHTML у Magento 2, найпростіший спосіб зробити це — використати наступний код:

$currentUrl = $block->getUrl('*/*/*', ['_current' => true, '_use_rewrite' => true]);

Це найкращий спосіб, оскільки вам навіть не потрібно використовувати Object Manager.

Той самий код також працює для блоків PHP класів. Але вам потрібно замінити $block на $this.

Наприклад:

$currentUrl = $this->getUrl('*/*/*', ['_current' => true, '_use_rewrite' => true]);

Але...

Найкращий спосіб отримати поточну URL-адресу в Magento 2

Найкращий спосів це використовувати UrlInterface.

Наприклад:

$urlInterface = \Magento\Framework\App\ObjectManager::getInstance()
->get(\Magento\Framework\UrlInterface::class);
$currentUrl = $urlInterface->getCurrentUrl();

Безпосереднє використання менеджера об’єктів не рекомендується, тому вам потрібно включити залежність UrlInterface у конструктор вашого класу, щоб мати можливість використовувати його.

Наприклад:

private $urlInterface;

public function __construct(
...
\Magento\Framework\UrlInterface $urlInterface
...
) {
$this->urlInterface = $urlInterface;
}

public function getCurrentUrl()
{
    return $this->urlInterface->getCurrentUrl();
}

Також в деяких статтях можна знайти рішення з store manager:

$storeManager = \Magento\Framework\App\ObjectManager::getInstance()
->get(\Magento\Store\Model\StoreManagerInterface::class);
$currentUrl = $storeManager->getStore()->getCurrentUrl();

Цей метод також працює, але він поверне URL-адресу з додатковими параметрами GET ___store і ___from_store, що не є бажаним результатом, наприклад:

https://domain.com/some-path?___store=default&___from_store=default

Крім того, якщо у вас є об’єкт запиту (request object), ви можете використовувати його метод getUriString, щоб отримати поточну URL-адресу.

Наприклад:

$currentUrl = $this->request->getUriString();

Ось як ви можете отримати поточну URL-адресу в Magento 2. Однак вам потрібна інша стаття якщо ви хочете отримати store ID, code, name, та website ID в Magento 2.