获取Magento 2.0中的当前页面URL

时间:2015-11-27 10:23:16

标签: magento magento2

我正在尝试在模板文件中检索当前页面网址,但我无法弄清楚如何在Magento 2.0中执行此操作。

有谁知道如何获得它? (请记住我正在使用模板/ phtml文件)

3 个答案:

答案 0 :(得分:25)

universal solution:可以在任何地方使用,而不仅仅是模板:

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

您可以do it simplier从模板中使用\Magento\Framework\View\Element\AbstractBlock::getUrl()方法:

$block->getUrl();

核心的一个例子:https://github.com/magento/magento2/blob/2.0.0/app/code/Magento/Customer/view/frontend/templates/logout.phtml#L14

答案 1 :(得分:7)

不要直接在文件中使用对象管理器实例

使用objectManager

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

使用工厂方法

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();
}

答案 2 :(得分:0)

没有对象管理器,您可以使用下面的行获取模板文件上的当前 URL

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