Якщо вам потрібно отримати поточну 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.