Verwendung der Funktion getUrl () in Magento 2

10

Kann ich Mage :: getUrl () direkt mit $ this-> in Magento2 aufrufen?

Wie kann ich den folgenden Code in Magento2 verwenden?

$link = Mage::getUrl('*/*/*', array('_current'=>true, '_use_rewrite'=>true, '_query'=>$this_params));
Sushivam
quelle
Sie können die Frage gerne schließen, nachdem Sie die Antwort von unten akzeptiert haben.
Rakesh Jesadiya

Antworten:

17

In einem Block können Sie $this->getUrl()die Parameter so verwenden, wie Sie sie aus Magento 1 kennen. Verwenden Sie sie $block->getUrl()stattdessen in einer Vorlage .

Außerhalb von Blöcken und Vorlagen benötigen Sie Zugriff. \Magento\Framework\UrlInterfaceWenn es in der aktuellen Klasse noch nicht verfügbar ist, fügen Sie es als Konstruktorparameter hinzu, weisen Sie es zu $this->urlBuilderund verwenden Sie es $this->urlBuilder->getUrl().

Fabian Schmengler
quelle
2
Bevor Sie es als Konstruktorparameter hinzufügen, überprüfen Sie, ob $ context bereits über eine zugängliche Instanz von urlBuilder verfügt.
LucScu
5

Sie können diese Methode einfach in Magento 2 wie folgt aufrufen:

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

Sie können auch einen Aktionswert anstelle der */*/*obigen URL übergeben, z. B. "Kunde / Konto / Login" gemäß Ihrer erforderlichen Aktion.

Rakesh Jesadiya
quelle
0

Sie können dies in Magento 2 wie verwenden

$block->getUrl('*/*/*', ['_current' => true, '_use_rewrite' => true])
Krishna ijjada
quelle
Wie verwende ich es in einer Blockdatei? Ich versuche, einen anderen Controller in der BackUrl-Funktion zu bekommen.
Jafar Pinjar