Magento 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

ใช้ตัวอย่างโค้ดด้านล่างเพื่อ phtml, ตัวควบคุมและกิจกรรมในวีโอไอพี 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
คุณไม่ควรสร้างอินสแตนซ์ของ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.