在Magento 2.0中获取当前页面URL

v8wbuo2f  于 2022-11-12  发布在  其他
关注(0)|答案(3)|浏览(162)

我正在尝试检索模板文件中的当前页面URL,但我不知道如何在Magento 2.0中进行。
有没有人知道如何得到它?(请记住,我正在一个模板/ phtml文件中工作)

kx5bkwkv

kx5bkwkv1#

通用解决方案:可以在任何地方工作,而不仅仅是从模板:

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

使用模板可以更简单地完成此操作:通过使用\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

xu3bshqb

xu3bshqb2#

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

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

vcirk6k63#

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

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

相关问题