Как получить URL-адрес страницы администратора (включая ключ) в контроллере пользовательского модуля magento 2x

Мне нужен URL-адрес страницы в Magento 2x, включая ключ в моем контроллере пользовательского модуля. здесь что-то похожее, но это для magento 1x. мне нужно для magento 2x.

для magento 1x: Mage::helper('adminhtml')->getUrl('adminhtml/framexport/index') но мне нужно подобное для magento 2x.


person Sohan    schedule 29.06.2016    source источник


Ответы (4)


Правильный способ - внедрить 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);
    }
}
person Nahid    schedule 28.09.2016

Вы можете легко получить URL-адрес администратора, позвонив

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

Обратите внимание, что объект типа «Контекст» загружается в объект $this.

person Shine    schedule 29.06.2016

Вы можете получить 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();
    }
person Jagriti Joshi    schedule 07.07.2017

Каким-то образом adminhtml/module создает дополнительную admin слаг, которая не работает.
Мое решение:

// $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.

person Iaroslav Glodov    schedule 27.01.2021