在开发Magento 2网站时,很多时候我们可能需要获取当前的模块,控制器,操作或路由器名称。但是很难找到模块,控制器,动作和路由器的实际名称。因为Magento有许多模块,控制器,动作和路由器。在本博客中,我们将向您展示如何获取Magento 2中当前模块,控制器,操作和路由的名称。
在下面的示例中,我将使用依赖注入(DI)和对象管理器来获取Magento 2中当前模块,控制器,操作和路由名称的名称。
使用依赖注入(DI)
以下是使用依赖项注入获取当前模块,控制器,操作和路由名称的示例代码。
在这里,我们可能需要在模块的块类的构造函数中注入\ Magento \ Framework \ App \ Request \ Http类的对象, 并从视图(.phtml)文件中访问它。
示例文件路径:app / code / YourCompanyName / YourModuleName / Block / YourCustomBlock.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | <?php namespace YourCompanyName\YourModuleName\Block; class YourCustomBlock extends \Magento\Framework\View\Element\Template { protected $_request; public function __construct( \Magento\Framework\View\Element\Template\Context $context, \Magento\Framework\App\Request\Http $request, array $data = [] ) { $this->_request = $request; parent::__construct($context, $data); } public function getModuleName() { return $this->_request->getModuleName(); } public function getControllerName() { return $this->_request->getControllerName(); } public function getActionName() { return $this->_request->getActionName(); } public function getRouteName() { return $this->_request->getRouteName(); } public function getControllerModule() { return $this->_request->getControllerModule(); } public function getFullActionName() { return $this->_request->getFullActionName(); } } |
您可以在vendor / magento / framework / App / Request / Http.php中找到更多功能。
现在,我们可以使用视图(.phtml)文件中的函数,如下所示。
1 2 3 4 5 6 | echo $block->getModuleName() . '<br />'; echo $block->getControllerName() . '<br />'; echo $block->getActionName() . '<br />'; echo $block->getRouteName() . '<br />'; echo $block->getControllerModule() . '<br />'; echo $block->getFullActionName() . '<br />'; |
使用对象管理器
以下是使用对象管理器获取当前模块,控制器,操作和路由名称的示例代码。
1 2 3 4 5 6 7 8 9 10 | $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 />'; |
希望对你有帮助。