Magento 2: Làm thế nào để có được bộ điều khiển, mô-đun, hành động và tên bộ định tuyến?


Câu trả lời:


33

Sử dụng mã dưới đây trong lớp trình điều khiển để lấy tên của trình điều khiển, mô-đun, hành động và tên tuyến:

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

hi @ Manashvi, chúng tôi có thể lấy tên bộ điều khiển và hành động từ giới thiệu không?
jafar pinjar

14

để lấy phtmltập tin hoặc controllersử dụng dưới đây

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

Làm cách nào tôi có thể nhận hành động của bộ điều khiển trang chủ để đặt người quan sát?
supriya mishra

Nếu bạn kiểm tra mã này, nó sẽ xuất ra cho trang chủ controller:index,action:index,route:cms,module:cmshy vọng điều này sẽ giúp ích.
Qaisar Satti

@QaisarSatti, chúng tôi có thể lấy tên bộ điều khiển và hành động từ url giới thiệu không? $ this-> redirect-> getRefererUrl ();
jafar pinjar

5

Sử dụng đoạn mã dưới đây để phtml, bộ điều khiển và sự kiện trong 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();

3
Bạn không nên khởi tạo ObjectManagertrực tiếp. Bạn nên tiêm các lớp / đối tượng cần thiết thông qua DI.
7ochem

4

Bạn cũng có thể làm:

$this->_requestInterface->getFullActionName()

Để có được tên hành động đầy đủ


1

Bạn có thể nhận được những thông tin này từ đối tượng yêu cầu.

Thí dụ

Trong controllerlớp của bạn :

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

Hy vọng điều này có thể giúp cho bạn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.