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)
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();
}
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With