web-dev-qa-db-ja.com

Magento 2.0で現在のページのURLを取得します

テンプレートファイルで現在のページのURLを取得しようとしていますが、Magento 2.0でそれを行う方法がわかりません。

誰もそれを取得する方法を知っていますか? (テンプレート/ phtmlファイルで作業していることに注意してください)

16
Seregmir

ユニバーサルソリューション :は、テンプレートだけでなく、どこからでも機能します。

_/** @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

29
Mage2.PRO

ファイルでオブジェクトマネージャインスタンスを直接使用しないでください

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

Object Managerを使用しない場合、以下の行を使用してcurrentURLtemplatesファイルで取得できます

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