本篇文章更新时间:2019年03月19日
今天写了这篇关于magento 2的二次开发的讲解。magento 2的二次开发比起其他的框架的二次开发相对来说比较复杂,你需要了解MVC模式的设计思想,懂得require js的使用。以及MySQL的命令的使用,特别是CLI的使用,接下来我讲述一下magento 2中是如何调用Helper类的。
第一步:首先我们创建模块,在目录app/code目录下创建Sky8g/Hello 即使模块:Sky8g_Hello,在此模块下创建
registration.php文件,写入一下代码。
1 2 3 4 5 6 | <?php \Magento\Framework\Component\ComponentRegistrar::register( \Magento\Framework\Component\ComponentRegistrar::MODULE, 'Sky8g_Hello', __DIR__ ); |
第二步: 创建在app/code/Sky8g/Hello/etc下创建module.xml文件,代码如下。
1 2 3 4 5 6 | <?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd"> <module name="Sky8g_Hello" setup_version="1.0.0"> </module> </config> |
第三步:创建在app/code/Sky8g/Hello/etc/frontend下创建routes.xml文件,代码如下。
1 2 3 4 5 6 7 8 | <?xml version="1.0" ?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:App/etc/routes.xsd"> <router id="standard"> <route frontName="hello" id="hello"> <module name="Sky8g_Hello"/> </route> </router> </config> |
第四步:在Sky8g/Hello/Controller/Test目录下创建Index.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 | <?php /** * * by sky8g 2019/03/16 */ namespace Sky8g\Hello\Controller\Test; use Sky8g\Hello\Helper\Data; class Index extends \Magento\Framework\App\Action\Action { protected $_coreRegistry; protected $_pageFactory; protected $_helper; protected $_storeManager; public function __construct( \Magento\Framework\App\Action\Context $context, \Magento\Framework\Registry $registry, \Magento\Store\Model\StoreManagerInterface $storeManager, Data $helper, \Magento\Framework\View\Result\PageFactory $pageFactory) { $this->_pageFactory = $pageFactory; $this->_coreRegistry = $registry; $this->_storeManager = $storeManager; $this->_helper = $helper; return parent::__construct($context); } public function execute() { echo $this->_helper->getStoreId()."<br/>"; echo $this->_helper->getStoreCode()."<br/>"; echo $this->_helper->getSiteId()."<br/>"; } } |
第五步:在Sky8g/Hello/Helper目录下创建Data.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 | <?php /** * * * @category Sky8g * @package Sky8g_Hello * @author sky8g */ namespace Sky8g\Hello\Helper; class Data extends \Magento\Framework\App\Helper\AbstractHelper { /** * @var \Magento\Store\Model\StoreManagerInterface */ protected $_storeManager; public function __construct( \Magento\Framework\App\Helper\Context $context, \Magento\Store\Model\StoreManagerInterface $storeManager ) { $this->_storeManager = $storeManager; parent::__construct($context); } public function getStoreId(){ return $this->_storeManager->getStore()->getStoreId(); } public function getStoreCode(){ return $this->_storeManager->getStore()->getCode(); } public function getSiteId(){ return $this->_storeManager->getStore()->getWebsiteId(); } } |
第六步:保存上传文件,执行下面命令
1 | php bin/magento setup:upgrade |
访问前端https://yourdomain/hello/test/index
则结果显示如下:
1 2 3 | 1 default 1 |
希望对你有帮助,如果又不懂的地方请留言。