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

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

Це найкращий метод, оскільки вам навіть не потрібно використовувати менеджер об'єктів.

Той самий код працює і для блокових 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();
}

Також у деяких посібниках ви можете знайти рішення за допомогою менеджера магазину:

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

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

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

Також, якщо у вас є об'єкт запиту, ви можете використовувати його метод getUriString , щоб отримати поточну URL-адресу.

Приклад:

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

Ось як ви можете отримати поточну URL-адресу в Magento 2. Однак вам потрібен інший посібник, ніж отримати ідентифікатор магазину, код, назву або ідентифікатор веб-сайту .