Magento2 如何在magento 2x自定义模块控制器中获取管理员页面(包括密钥)的url

Magento2 如何在magento 2x自定义模块控制器中获取管理员页面(包括密钥)的url,magento2,magento-2.0,Magento2,Magento 2.0,我需要Magento 2x中的页面url,包括自定义模块控制器中的密钥。 类似的东西,但这是为magento 1x。我需要一个magento 2x 对于magento 1x:Mage::helper('adminhtml')->getUrl('adminhtml/framexport/index')但是我需要类似的magento 2x。您可以通过调用 $this->getUrl('adminhtml/module/action'); 请不要在$this object中加载“Context

我需要Magento 2x中的页面url,包括自定义模块控制器中的密钥。 类似的东西,但这是为magento 1x。我需要一个magento 2x


对于magento 1x:
Mage::helper('adminhtml')->getUrl('adminhtml/framexport/index')
但是我需要类似的magento 2x。

您可以通过调用

$this->getUrl('adminhtml/module/action');

请不要在$this object中加载“Context”类型的对象,正确的方法是,在模型块或任何类构造函数中插入UrlInterface

然后调用getUrl()函数


您可以按如下方式获取管理员url:

    public function __construct(\Magento\Backend\Helper\Data $HelperBackend
        ) {
         $this->HelperBackend = $HelperBackend;
        }

    /**
     *
     * @param \Magento\Framework\Event\Observer $observer
     * @return void
     */
    public function getAdminUrl()
    {
        echo $this->HelperBackend->getHomePageUrl();
    }

不知何故,
adminhtml/module
创建了一个额外的
admin
slug,但它不起作用。
我的解决办法是:

// $this->urlBuilder is defined in __constructor() \Magento\Framework\UrlInterface $urlBuilder

$query = [
    'method' => 'confirm',
    'id' => $order->getEntityId()
];
$url = $this->urlBuilder->getUrl('module', $query);
它适用于安全URL(带密钥)和非默认的
/admin
URL,例如
/backend

// $this->urlBuilder is defined in __constructor() \Magento\Framework\UrlInterface $urlBuilder

$query = [
    'method' => 'confirm',
    'id' => $order->getEntityId()
];
$url = $this->urlBuilder->getUrl('module', $query);