本教程翻译自:mageplaza
完整的Magento2开发中文教程请点击这里
正文:
#Magento2如何创建模块
我们将讨论如何在Magento 2中创建Hello World模块,以最清晰最简单的创建方法让你记住。
注意:local/ community/ core/ 文件夹的概念只存在于Magento 1中,Magento 2中没有。
###第一步:创建Hello World模块的文件夹
模块的名称被定义为 “VendorName_ModuleName”。第一部分是开发商的名称,最后一部分是模块的名称
例如:Magento_Helloworld,Magentochina_Helloworld。如下文件夹:
app/code/Magentochina/Hello
以上模块的开发商是Magentochina,模块名是Hello
###第二步:增加模块配置文件文件module.xml
该文件是必须增加的,路径为:
app/code/Magentochina/Hello/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="Magentochina_Hello" setup_version="0.0.1"/>
</config>
###第三步:增加注册文件registration.php
文件路径:
app/code/Magentochina/Hello/registration.php
该文件内容:
<?php
\Magento\Framework\Component\ComponentRegistrar::register(
\Magento\Framework\Component\ComponentRegistrar::MODULE,
'Magentochina_Hello',
__DIR__
);
###第四步:激活模块
当完成第三步,我们已经创建了一个Hello world的模块.下面我们一步步激活它.
再命令行模式,我们先查看该模块的状态
php bin/magento module:status
输入该命令之后,我们会看见这个模块在禁用列表里.
List of disabled modules: Mageplaza_Hello
输入以下命令激活该模块:
php bin/magento module:enable Magentochina_Hello
另外一种激活该模块的方式是先找到文件:
app/etc/config.php
然后在该文件里找到自己编写的模块,并把标志改为1,如:
...
'Magentochina_Hello' => 1,
....
现在我们已经激活这个模块了,但是现在当我们打开浏览器访问,会发现Magento 2提示错误:
Please upgrade your database: Run “bin/magento setup:upgrade” from the Magento root directory.
我们跟着这个提示运行命令升级数据库:
php bin/magento setup:upgrade
运行完毕之后,再访问Magento 2就没有上面的那个错误了。这个时候你打开后台System Configuration → Advanced → Disable Modules Output会找到你的模块
###第五步:创建路由
在这一步,我们要实现打开一个URL显示Hello world.
magento的路由分为3个部分:Route_id、控制器和动作,如下:
http://magentostore.com/index.php/route_id/controller/action
首先,我们需要增加一个路由文件:routes.xml
Magentochina/Hello/etc/frontend/routes.xml
这是一个前端路由,所以我们在frontend文件夹里创建.如果你是想创建后台的,就需要在adminhtml文件夹里创建.
路由配置文件的内容:
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="../../../../../../lib/internal/Magento/Framework/App/etc/routes.xsd">
<router id="standard">
<route id="mageplaza" frontName="magentochina">
<module name="Magentochina_Hello" />
</route>
</router>
您应定义id和FrontName是相同的,因为在安装过程中可能会出现一些错误。
在定义路由的第一部分后,URL将显示为:
www.magentochina.org/magentochina/*
然后,您将继续定义控制器,动作
你的网址现在应该是:
www.magentochina.org/magentochina/hello/world
现在我们创建文件:
Magentochina/Hello/Controller/Hello/World.php
文件内容:
<?php
namespace Mageplaza\Hello\Controller\Hello;
class World extends \Magento\Framework\App\Action\Action
{
public function __construct(
\Magento\Framework\App\Action\Context $context)
{
return parent::__construct($context);
}
public function execute()
{
echo 'Hello World';
exit;
}
}
####完成所有步骤后,记得首先刷新缓存,然后打开URL时,应该在浏览器中显示输出“Hello World”。
####我们希望我们翻译的教程对你们非常有用。
####翻译:西帅