Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get the current page url in Magento 2.0

I am trying to retrieve the current page url in a template file, but I can't figure out how to do it in Magento 2.0.

Does anyone know how to get it? (keep in mind I am working in a template / phtml file)

like image 759
Seregmir Avatar asked Nov 27 '15 10:11

Seregmir


2 Answers

Don't use object manager instance directly in files

With objectManager

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

With Factory Method

protected $_urlInterface;

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

public function getUrlInterfaceData()
{
    echo $this->_urlInterface->getCurrentUrl();

    echo $this->_urlInterface->getUrl();

    echo $this->_urlInterface->getUrl('test/test2');

    echo $this->_urlInterface->getBaseUrl();
}
like image 45
Prince Patel Avatar answered Sep 22 '22 08:09

Prince Patel


The universal solution: works from anywhere, not only from a template:

/** @var \Magento\Framework\UrlInterface $urlInterface */
$urlInterface = \Magento\Framework\App\ObjectManager::getInstance()->get('Magento\Framework\UrlInterface');
$urlInterface->getCurrentUrl();

From a template you can do it simplier: by using the \Magento\Framework\View\Element\AbstractBlock::getUrl() method:

$block->getUrl();

An example from the core: https://github.com/magento/magento2/blob/2.0.0/app/code/Magento/Customer/view/frontend/templates/logout.phtml#L14

like image 58
Dmitry Fedyuk Avatar answered Sep 22 '22 08:09

Dmitry Fedyuk