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

时间:2016-06-29 08:22:48

标签: magento2 magento-2.0

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

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

4 个答案:

答案 0 :(得分:3)

您可以通过调用

轻松获取管理员网址
$this->getUrl('adminhtml/module/action');

请注意不要"上下文"对象类型加载在$ this对象

答案 1 :(得分:3)

正确的方法是,在模型块或任何类构造函数中注入 UrlInterface

然后调用 getUrl()函数

class SomeClass extends \Some\Other\Class
{

    protected $_backendUrl;

    public function __construct(
        ...........
        ...........
        \Magento\Backend\Model\UrlInterface $backendUrl,
        ...........
    ) {

        $this->_backendUrl = $backendUrl;
    }
    public function someFunction()
    {
        $params = array('some'=>'url_parameters');

        $url = $this->_backendUrl->getUrl("the/url/path", $params);
    }
}

答案 2 :(得分:1)

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

    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();
    }

答案 3 :(得分:0)

不知何故,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);

它适用于安全网址(带密钥)和非默认 /admin 网址,例如 /backend