我正在尝试检索模板文件中的当前页面URL,但我不知道如何在Magento 2.0中进行。有没有人知道如何得到它?(请记住,我正在一个模板/ phtml文件中工作)
kx5bkwkv1#
通用解决方案:可以在任何地方工作,而不仅仅是从模板:
/**@var \Magento\Framework\UrlInterface $urlInterface */ $urlInterface = \Magento\Framework\App\ObjectManager::getInstance()->get('Magento\Framework\UrlInterface'); $urlInterface->getCurrentUrl();
使用模板可以更简单地完成此操作:通过使用\Magento\Framework\View\Element\AbstractBlock::getUrl()方法:
\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
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(); }
vcirk6k63#
如果没有对象管理器,您可以使用下面的行获取模板文件上的当前URL
URL
$this->getUrl('*/*/*', ['_current' => true, '_use_rewrite' => true])
3条答案
按热度按时间kx5bkwkv1#
通用解决方案:可以在任何地方工作,而不仅仅是从模板:
使用模板可以更简单地完成此操作:通过使用
\Magento\Framework\View\Element\AbstractBlock::getUrl()
方法:核心示例:https://github.com/magento/magento2/blob/2.0.0/app/code/Magento/Customer/view/frontend/templates/logout.phtml#L14
xu3bshqb2#
不要直接在文件中使用对象管理器示例
使用对象管理器
使用工厂方法
vcirk6k63#
如果没有对象管理器,您可以使用下面的行获取模板文件上的当前
URL