Magento 2:获取控制器,模块,操作和路由名称

本文说明了如何在Magento 2中获取当前模块的名称,控制器名称,操作名称和路由名称。

使用依赖注入(DI)

以下是我的自定义模块(Chapagain_HelloWorld)的块类。我在模块的块类的构造函数中注入了\ Magento \ Framework \ App \ Request \ Http类的对象。

app / code / Chapagain / HelloWorld / Block / HelloWorld.php

<?php
namespace Chapagain\HelloWorld\Block;
class HelloWorld extends \Magento\Framework\View\Element\Template
{
    protected $_request;    
    
    public function __construct(
        \Magento\Backend\Block\Template\Context $context,
        \Magento\Framework\App\Request\Http $request,
        array $data = []
    )
    {        
        $this->_request = $request;
        parent::__construct($context, $data);
    }
    
    public function getControllerModule()
    {
        return $this->_request->getControllerModule();
    }
    
    public function getFullActionName()
    {
        return $this->_request->getFullActionName();
    }
    
    public function getRouteName()
    {
        return $this->_request->getRouteName();
    }
    
    public function getActionName()
    {
        return $this->_request->getActionName();
    }
    
    public function getControllerName()
    {
        return $this->_request->getControllerName();
    }
    
    public function getModuleName()
    {
        return $this->_request->getModuleName();
    }
}
?>

请参阅vendor / magento / framework / App / Request / Http.php中的更多功能。

现在,我们可以在模板(.phtml)文件中使用can函数。

echo $block->getRouteName() . '<br />';
echo $block->getModuleName() . '<br />';
echo $block->getControllerName() . '<br />';
echo $block->getActionName() . '<br />';
echo $block->getFullActionName() . '<br />';
echo $block->getControllerModule() . '<br />';

使用对象管理器

$objectManager =  \Magento\Framework\App\ObjectManager::getInstance();        
 
$request = $objectManager->get('\Magento\Framework\App\Request\Http');
 
echo $request->getRouteName() . '<br />';
echo $request->getModuleName() . '<br />';
echo $request->getControllerName() . '<br />';
echo $request->getActionName() . '<br />';
echo $request->getFullActionName() . '<br />';
echo $request->getControllerModule() . '<br />';

希望这可以帮助。谢谢。

相关文章

0 0 投票数
文章评分
订阅评论
提醒
0 评论
最旧
最新 最多投票
内联反馈
查看所有评论