получить URL-адрес контроллера администратора в magento 2
Вот моя структура каталогов файла контроллера в Magento 2 - app/code/Namespace/Modulename/Controller/Adminhtml/Blacklist/Index.php
В Index.php я пишу приведенный ниже код -
namespace Mynamespace\Modulename\Controller\Adminhtml\ModuleDirectoryname;
use Magento\Backend\App\Action;
use Magento\Backend\App\Action\Context;
class Index extends Action
{
protected $helper;
protected $context;
public function __construct(
Context $context,
\VT\Blacklist\Helper\Data $helper
) {
$this->viewHelper = $viewHelper;
parent::__construct($context);
}
public function execute()
{
echo "hello"; die;
}
}
Я использую этот Inject - \Magento\Backend\Model\urlinterface$urlbuilder в моей другой функции __construct и печатаю URL-адрес через -
echo $url = $this->urlBuilder->getUrl('namespace_modulename/adminhtml/moduledirectoryname/index');
Но как только я запускаю выше напечатанного URL-адреса, он перенаправляется на панель управления, а не печатает "привет";
Может вы, пожалуйста, дайте мне знать, чего мне здесь не хватает?
1 answers
Я почти уверен, что это потому, что ваш URL-адрес сгенерирован неправильно.
Давайте возьмем следующий пример:
getUrl('adminRouteFrontName/controllerFolder/actionClass')
Вот как должен быть создан URL-адрес, и вот как вы должны заменить значения:
-
adminroutefrontname: это значение, объявленное в вашем
adminhtml/routes.xml
, поэтому я не уверен, что вы поместили туда в своем случае -
Папка контроллера: имя папки контроллера в разделе
Controller/Adminhtml
, поэтому в вашем случае это Имя модуля -
Класс действий: имя вашего класса действий в папке контроллера, например, с
Index.php
это будетindex
, дляGrid.php
это будетgrid
, и поэтому в вашем случае этоindex
Итак, если вы правильно поняли эти три вещи, я почти уверен, что вам следует попробовать удалить adminhtml
из вашего параметра.