I want to know, how can I generate a valid admin url from
- A Controller
- 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
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());
-
1In Magento 2.0.6 getUrl() is defined in \Magento\Framework\UrlInterface not (or no longer or not yet) in \Magento\Backend\Model\UrlInterface!fietserwin– fietserwin2016年10月10日 10:08:12 +00:00Commented Oct 10, 2016 at 10:08
-
Yep. This has changed. You are right.Marius– Marius2016年10月10日 14:43:45 +00:00Commented Oct 10, 2016 at 14:43
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')])