10

I want to know, how can I generate a valid admin url from

  1. A Controller
  2. Anywhnere

so I can make any custom url admin work if I need it in an ajax or whatever. Answer for either 1 or 2 will do the job, bot I think it is better to have both.

2 Answers 2

19

From a controller you can simply use $this->getUrl('url/path/here', $paramsHere = array()).

From anywhere else:

You need to add an instance of \Magento\Framework\UrlInterface in your class and use that:

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

Then you can use this:

$url = $this->urlBuilder->getUrl('url/path/here', $paramsHere = array());
2
  • 1
    In Magento 2.0.6 getUrl() is defined in \Magento\Framework\UrlInterface not (or no longer or not yet) in \Magento\Backend\Model\UrlInterface!
    – fietserwin
    Oct 10, 2016 at 10:08
  • Yep. This has changed. You are right.
    – Marius
    Oct 10, 2016 at 14:43
2

You can generate secure admin url key by

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

If you want to send parameters then add your params before key

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

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.