Magento2:Como gerar URL de administrador com chave segura de um controlador
-
29-09-2020 - |
Pergunta
Quero saber como posso gerar um URL de administrador válido a partir de
- Um controlador
- 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.
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