Magento 2: Wie bekomme ich den Namen des Controllers, Moduls, der Aktion und des Routers?

Antworten:

33

Verwenden Sie den folgenden Code in der Controller-Klasse, um den Namen des Controllers, des Moduls, der Aktion und der Route abzurufen:

<?php
    namespace Custom\Module\Controller\Index;

class Index extends \Magento\Framework\App\Action\Action
{
    protected $request;

    public function __construct(
        \Magento\Framework\App\Action\Context $context,
        \Magento\Framework\App\Request\Http $request
    ){
        parent::__construct($context);
        $this->request = $request;
    }

    public function execute()
    {
        $moduleName = $this->request->getModuleName();
        $controller = $this->request->getControllerName();
        $action     = $this->request->getActionName();
        $route      = $this->request->getRouteName();

        echo $moduleName."<br/>";
        echo $controller."<br/>";
        echo $action."<br/>";
        echo $route."<br/>";

        $this->_view->loadLayout();
        $this->_view->renderLayout();
    }
}
Manashvi Birla
quelle
Hallo @ Manashvi, können wir Controller- und Aktionsnamen von referralUrl erhalten?
Jafar Pinjar
14

um die phtmlDatei zu bekommen oder controllerunten zu verwenden

echo $controllerName = $this->getRequest()->getControllerName();
echo $actionName = $this->getRequest()->getActionName();
echo $routeName = $this->getRequest()->getRouteName();
echo $moduleName = $this->getRequest()->getModuleName(); 
Qaisar Satti
quelle
Wie kann ich eine Homepage-Controller-Aktion ausführen, um einen Beobachter festzulegen?
Supriya Mishra
Wenn Sie diesen Code testen, wird er für die Homepage ausgegeben. Ich controller:index,action:index,route:cms,module:cmshoffe, dies hilft.
Qaisar Satti
@ QaisarSatti, können wir den Namen des Controllers und der Aktion aus der Verweis-URL abrufen? $ this-> redirect-> getRefererUrl ();
Jafar Pinjar
5

Verwenden Sie die folgenden Codefragmente für HTML, Controller und Ereignisse in Magento 2

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$requestInterface = $objectManager->get('Magento\Framework\App\RequestInterface');

$routeName      = $requestInterface->getRouteName();
$moduleName     = $requestInterface->getModuleName(); 
$controllerName = $requestInterface->getControllerName(); 
$actionName     = $requestInterface->getActionName();
Arun Prabhu
quelle
3
Sie sollten das nicht ObjectManagerdirekt instanziieren . Sie sollten die benötigten Klassen / Objekte über DI injizieren.
Chem.
4

Sie können auch tun:

$this->_requestInterface->getFullActionName()

So rufen Sie den vollständigen Aktionsnamen ab

Maxime Huran
quelle
1

Sie können diese Informationen aus dem Anforderungsobjekt abrufen.

Beispiel

In deiner controllerKlasse:

$routeName        = $this->getRequest()->getRouteName();
$moduleName       = $this->getRequest()->getModuleName();
$controllerName   = $this->getRequest()->getControllerName();
$actionName       = $this->getRequest()->getActionName();

Ich hoffe das wird helfen.

Shyam
quelle