我们将讨论如何在Magento 2中创建HelloWorld模块,以帮助您现在拥有最清晰和最简单的创建方式。请记住,local/ community/ core/ folders
的概念只存在于Magento 1中,您将不会在Magento 2中使用它们。
在Magento 2中创建HelloWorld模块
要创建HelloWorld模块,您需要完成以下高级步骤:
- 步骤1:创建
HelloWorld
模块的文件夹 - 步骤2:创建
etc/module.xml
文件 - 步骤3:创建
etc/Registrationphp
文件 - 步骤4:启用模块
步骤1:创建HelloWorld模块的文件夹
模块的名称格式为VendorName_ModuleName
。前半部分是供应商的名称,后半部分是模块的名称,例如:Magento_HelloWorld
,Max_Test
。跟着步骤先创建文件夹
app/code/Max/HelloWorld
步骤2:创建etc/module.xml文件
然后,在模块目录下创建etc文件夹,并添加module.xml
文件。
app/code/Mageplaza/HelloWorld/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="Mageplaza_HelloWorld" setup_version="1.0.0">
</module>
</config>
步骤3:创建registration.php文件
在这个步骤中,我们将在模块目录下添加registration.php
,路径如下所示:
app/code/Mageplaza/HelloWorld/registration.php
内容如下:
<?php
\Magento\Framework\Component\ComponentRegistrar::register(
\Magento\Framework\Component\ComponentRegistrar::MODULE,
'Mageplaza_HelloWorld',
__DIR__
);
步骤4:启用模块
完成步骤3,我们已经创建好了HelloWorld
模块,现在我们启用此模块。
进入命令行界面,在Magento根目录执行以下命令:
php bin/magento module:status
这个命令将会列出所有模块和状态,可以看到模块现在是禁用的:
List of disabled modules:
Mageplaza_HelloWorld
现在,我们启用模块,在命令行运行如下:
php bin/magento module:enable Max_HelloWorld
或者通过修改配置文件的启用模块,文件位置如下:
app/etc/config.php
你会看到一个长长的模块列表,所有的模块都在这里面,只需把你创建的模块添加进去,并将值改为1。
...
'Mageplaza_HelloWorld' => 1,
....
模块现在已经启用了。
但是当你在浏览器中打开网站时,页面上将会显示一个错误信息:
Please upgrade your database: Run “bin/magento setup:upgrade” from the Magento root directory.
让我们运行命令:
php bin/magento setup:upgrade
完成后,当您在浏览器中打开网站时,会看到网站的样式没有了。

在命令行执行以下命令来修复这个问题,如果你当前是开发者模式,需要在后面加上-f
php bin/magento setup:static-content:deploy
然后再刷新,网站就可以正常显示了。
现在,我们将创建一个控制器来测试模块。
在创建控制器之前,我们先为HelloWorld模块创建一个路由。
在Magento中,路由分为三个部分:路由名称、控制器和动作,如下所示:
http://example.com/index.php/frontname/controller/action
我们需要先创建routes.xml
文件,路径如下:
app/code/Max/HelloWorld/etc/frontend/routes.xml
因为这是一个前端路由,所以我们将它添加到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 frontName="helloworld" id="helloworld">
<module name="Max_HelloWorld"/>
</route>
</router>
</config>
定义路由的第一部分后,URL将显示为:
http://example.com/helloworld/*
然后,我们继续创建控制器和动作。需要注意的是,Magento2的控制器是一个目录,每一个操作分别是该目录下一个单独的文件。
app/code/Max/HelloWorld/Controller/Index/Test.php
这里的Index
是控制器名字,Test
是动作的名字,在Test.php
文件添加以下代码:
<?php
namespace Max\HelloWorld\Controller\Index;
class Test extends \Magento\Framework\App\Action\Action
{
protected $_pageFactory;
public function __construct(
\Magento\Framework\App\Action\Context $context,
\Magento\Framework\View\Result\PageFactory $pageFactory)
{
$this->_pageFactory = $pageFactory;
return parent::__construct($context);
}
public function execute()
{
echo "Hello World";
exit;
}
}
添加完成后,在命令行执行php bin/magento cache:clean
清除缓存。
然后我们在浏览器访问这个控制器,地址如下:
http://example.com/helloworld/index/test
如果浏览器上显示Hello World
,那么我们的模块和控制器就创建成功了。
网友评论