마 젠토 2 : 컨트롤러, 모듈, 액션 및 라우터 이름을 얻는 방법?


답변:


33

컨트롤러 클래스에서 아래 코드를 사용하여 컨트롤러, 모듈, 작업 및 경로 이름을 가져옵니다.

<?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, referralUrl에서 컨트롤러 및 작업 이름을 가져올 수 있습니까?
jafar pinjar

14

얻을 phtml파일이나 controller아래 사용을

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

관찰자를 설정하기 위해 홈페이지 컨트롤러 작업을 받으려면 어떻게해야합니까?
supriya mishra

이 코드를 테스트하면 홈페이지에 출력되어 controller:index,action:index,route:cms,module:cms도움이 될 것입니다.
Qaisar Satti

@ QaisarSatti, 추천 URL에서 컨트롤러 및 액션 이름을 얻을 수 있습니까? $ this-> redirect-> getRefererUrl ();
jafar pinjar

5

아래 코드 스 니펫을 사용하여 magento 2의 phtml, 컨트롤러 및 이벤트

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

3
ObjectManager직접 인스턴스화해서는 안됩니다 . DI를 통해 필요한 클래스 / 객체를 주입해야합니다.
7ochem

4

당신은 또한 할 수 있습니다 :

$this->_requestInterface->getFullActionName()

전체 작업 이름을 얻으려면


1

요청 객체에서 이러한 정보를 얻을 수 있습니다.

당신의에 controller클래스 :

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

이것이 도움이되기를 바랍니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.