Magento2.x 插件 Module(模块) 开发实战
一、基本简介
1、开发的插件模块代码同一放在 : app/code/ 目录下;
2、模块的文件命名规则: app/code/namespace/modulea. namespace:这里我用的 Plugin 命名
b. module :这里我用的 Test 命名3、测试模块目录结构如下所示:
二、测试模块实战
(一)模块声明
1、创建 module.xml 文件, app/code/Plugin/Test/etc/module.xml
<?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="Plugin_Test" setup_version="1.0.0" active="true" />
</config>
a. name:表示 module 的名称
b. setup_version:表示 module 的版本号2、创建 registration.php 文件, app/code/Plugin/Test/registration.php
\Magento\Framework\Component\ComponentRegistrar::register(
\Magento\Framework\Component\ComponentRegistrar::MODULE,
'Plugin_Test',
__DIR__
);
3、激活模块
a. 终端切换目录到 mangent2 项目根目录 ;
b. 执行php bin/magento setup:upgrade
命令
b. 结果:(出现该模块证明已经被加载)
(二)路由声明
1、前端路由
a. 创建前端路由时,需要新建 app/code/Plugin/Test/etc/frontend/routes.xml 文件,来声明前端控制器的名称;
<?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 id="test" frontName="test">
<module name="Plugin_Test" before="Magento_Core"/>
</route>
</router>
</config>
b. router 标签说明:
id = standard 表示前端路由;
c. route 标签说明:
id : 对于 router 的唯一标识名;
frontName : 前端 URL 的控制名称;d. module 标签说明:
name : 声明 module 的名称;
before : 表示在定义 module 之前加载;
after : 表示在定义 moduel 之后加载;2、创建前端控制器
a. 比如 我们的前端访问路由 URL 为:web.magento2.com/test/hello/word,继续创建文件(app/code/Plugin/Test/Controller/Hello/World.php)
<?php
/**
* Created by PhpStorm.
* User: Admin
* Date: 2017/12/23
* Time: 17:21
*/
namespace Plugin\Test\Controller\Hello;
use Magento\Framework\App\Action\Action;
use Magento\Framework\App\Action\Context;
use Magento\Framework\View\Result\PageFactory;
class World extends Action
{
/** @var \Magento\Framework\View\Result\Page */
protected $resultPageFactory;
/**
* World constructor.
*
* @param Context $context
* @param PageFactory $resultPageFactory
*/
public function __construct(Context $context, PageFactory $resultPageFactory) {
$this->resultPageFactory = $resultPageFactory;
parent::__construct($context);
}
/**
*
* @return \Magento\Framework\View\Result\PageFactory
*/
public function execute()
{
echo "Web Hello World !";
die;
}
}
b. 问刚才的路由 URL,就可以看到浏览器输出内容(Web Hello World !)了。( 记得经常先执行
php bin/magento setup:upgrade
该命令。)
(三)创建 Block
1、上面我们说了如何从控制器输出内容到页面,但是真正与浏览器页面最相关的还是