Magento2: So generieren Sie eine Administrator-URL mit einem sicheren Schlüssel von einem Controller

8

Ich möchte wissen, wie ich eine gültige Admin-URL generieren kann

  1. Ein Controller
  2. Jedenfalls

So kann ich jeden benutzerdefinierten URL-Administrator zum Laufen bringen, wenn ich ihn in einem Ajax oder was auch immer brauche. Die Antwort auf 1 oder 2 erledigt den Job, aber ich denke, es ist besser, beide zu haben.

Lachezar Raychev
quelle

Antworten:

13

Von einem Controller können Sie einfach verwenden $this->getUrl('url/path/here', $paramsHere = array()).

Von überall anders:

Sie müssen eine Instanz von \Magento\Framework\UrlInterfacein Ihrer Klasse hinzufügen und diese verwenden:

protected $urlBuider;
public function __construct(
    ....
    \Magento\Framework\UrlInterface $urlBuilder,
    ....
) {
    ....
    $this->urlBuilder = $urlBuilder;
    ....
}

Dann können Sie dies verwenden:

$url = $this->urlBuilder->getUrl('url/path/here', $paramsHere = array());
Marius
quelle
1
In Magento 2.0.6 ist getUrl () in \ Magento \ Framework \ UrlInterface nicht (oder nicht mehr oder noch nicht) in \ Magento \ Backend \ Model \ UrlInterface definiert!
Fietserwin
Ja. Das hat sich geändert. Du hast recht.
Marius
0

Sie können einen sicheren Administrator-URL-Schlüssel generieren, indem Sie

protected $urlBuider;
public function __construct(
    ....
    \Magento\Backend\Model\UrlInterface $urlBuilder,
    ....
) {
    ....
    $this->urlBuilder = $urlBuilder;
    ....
}

public function Yourmethod()
{
$this->urlBuilder->getRouteUrl('RouteId/ControllerName/actionName',[ 'key'=>$this->urlBuilder->getSecretKey('RouteId','ControllerName','actionName')])
}

Wenn Sie Parameter senden möchten, fügen Sie Ihre Parameter vor dem Schlüssel hinzu

$this->urlBuilder->getRouteUrl('RouteId/ControllerName/actionName',[ 'param1'=> 'paramValue1','param2'=> 'paramValue2','key'=>$this->urlBuilder->getSecretKey('RouteId','ControllerName','actionName')])
HaFiz Umer
quelle