Якщо вам потрібно отримати поточну 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. Однак вам потрібен інший посібник, ніж отримати ідентифікатор магазину, код, назву або ідентифікатор веб-сайту .