Pergunta

Quero saber como posso gerar um URL de administrador válido a partir de

  1. Um controlador
  2. Em qualquer lugar

para que eu possa fazer qualquer administrador de URL personalizado funcionar se precisar dele em um ajax ou qualquer outra coisa.A resposta para 1 ou 2 resolverá o problema, mas acho que é melhor ter os dois.

Foi útil?

Solução

A partir de um controlador você pode simplesmente usar $this->getUrl('url/path/here', $paramsHere = array()).

De qualquer outro lugar:

Você precisa adicionar uma instância de \Magento\Framework\UrlInterface na sua classe e use isso:

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

Então você pode usar isso:

$url = $this->urlBuilder->getUrl('url/path/here', $paramsHere = array());

Outras dicas

Você pode gerar uma chave de URL de administrador segura

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')])
}

Se você deseja enviar parâmetros, adicione-os antes da chave

$this->urlBuilder->getRouteUrl('RouteId/ControllerName/actionName',[ 'param1'=> 'paramValue1','param2'=> 'paramValue2','key'=>$this->urlBuilder->getSecretKey('RouteId','ControllerName','actionName')])
Licenciado em: CC-BY-SA com atribuição
Não afiliado a magento.stackexchange
scroll top