Как использовать функцию getUrl () в Magento 2

11

Могу ли я вызвать Mage :: getUrl () напрямую, используя $ this-> в Magento2?

Как я могу использовать приведенный ниже код в Magento2?

$link = Mage::getUrl('*/*/*', array('_current'=>true, '_use_rewrite'=>true, '_query'=>$this_params));
Sushivam
источник
Вы можете смело закрывать вопрос после принятия ответа снизу.
Ракеш Jesadiya

Ответы:

18

В блоке вы можете использовать $this->getUrl()параметры, как вы их знаете из Magento 1. В шаблоне используйте $block->getUrl()вместо этого.

К внешним блокам и шаблонам вам нужен доступ \Magento\Framework\UrlInterface, поэтому, если он еще не доступен в текущем классе, добавьте его в качестве параметра конструктора, назначьте его $this->urlBuilder, а затем используйте $this->urlBuilder->getUrl().

Фабиан Шменглер
источник
2
перед добавлением его в качестве параметра конструктора проверьте, есть ли в $ context уже доступный экземпляр urlBuilder.
LucScu
5

Вы можете просто вызвать этот метод в magento 2, используя следующий способ,

//define query array pass to url
    $query = ['str1' => 'value1', 'str2' => 'value2',];
    $link = $block->getUrl('*/*/*', ['_current' => true, '_use_rewrite' => true, '_query' => $query]);

Вы также можете передать значение действия вместо */*/*указанного выше URL-адреса, например «клиент / учетная запись / логин», в соответствии с требуемым действием.

Ракеш Джесадия
источник
0

Вы можете использовать это в Magento 2, как

$block->getUrl('*/*/*', ['_current' => true, '_use_rewrite' => true])
Кришна иджада
источник
как использовать это в файле блока? я пытаюсь получить другой контроллер в функции backUrl.
Джафар Пинджар