本篇文章将介绍如何创建一个输出 hello world
的简单模块。 在 Magento 2 中,模块存在于 app/code
目录下,格式如下 app/code/<Vendor>/<ModuleName>
。
第一步:创建模块所需的目录
我们将使用 ThankIT
作为 Vendor name ,HelloWorld
作为 ModuleName ,所以我们现在创建文件目录 app/code/ThankIT/HelloWorld
第二步:创建 module.xml 声明该模块
在上面创建的目录下,创建 etc
目录,在 etc
下创建 module.xml
1 | <!-- File: app/code/ThankIT/HelloWorld/etc/module.xml --> |
在该配置文件中,我们注册了一个模块名称为 ThankIT_HelloWorld
的模块,它的版本是 1.0.0
第三步:创建 registration.php 注册模块
Magento 2 中的所有模块都必须通过 magento 的 ComponentRegistrar 类进行注册。
1 | #File: app/code/ThankIT/HelloWorld/registration.php |
第四步:Enable 该模块
上面步骤做完后,我们就已经创建好了一个空模块,下面输入以下命令行,看看我们的模块是否已经注册好了。
1 | php bin/magento module:status |
你会看到
1 | List of disabled modules: |
这代表,模块已经被检测到,但 disabled 状态,下面启用它
1 | php bin/magento module:enable ThankIT_HelloWorld |
如果看到以下信息,表明模块已经成功启用了
1 | The following modules has been enabled: |
这是你第一次启用该模块,magento 需要检查和升级模块的数据库记录,运行以下命令行
1 | php bin/magento setup:upgrade |
现在我们进入后台,在 Stores -> Configuration -> Advanced -> Advanced
下我们可以看到该模块了
第五步:为模块创建路由
Magento 系统中,请求 URL 是如下格式
1 | http://example.com/<router_name>/<controller_name>/<action_name> |
路由用来分配 URL 给对应的 controller (控制器)和 action 。在该模块中,我们给前端创建一个路由,所以创建下面的文件
1 | <!-- File: app/code/ThankIT/HelloWorld/etc/frontend/routes.xml --> |
定义好路由后,我们的模块 URL 路径变成 http://example.com/helloworld/*
第六步:创建 controller 和 action
在该步骤中,我们将创建 controller 和 action 来输出 Hello World
。假设我们的 URL 是 http://example.com/helloworld/index/display
所以我们将创建如下文件
1 | #File: app/code/Mageplaza/HelloWorld/Controller/Index/Display.php |
如果打开 http://example.com/helloworld/index/display
就会看到输出 Hello World
字符串。 如果出现 404 请清空缓存 php bin/magento cache:clean
参考文档
Magento 2 Module Development - Magento 2 Hello World Simple Module