文档 下载安装 商店 博客 问答 主机

Magento 2如何创建模块[教程]

开发
后端
模块

#1

本教程翻译自: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”。
####我们希望我们翻译的教程对你们非常有用。
####翻译:西帅


Magento2 CRUD模型,资源集合,工厂对象详解[教程]
后台ACL访问控制列表[权限管理教程]
Magento2路由Route详解[教程]
Magento2支付页面增加输入表单
Magento2模块开发中文教程索引
如何创建系统配置文件system.xml
#2

按上面步骤做完,结果一直报404错误,最后清理了下缓存,问题解决。


#3

好,我修订一下文章。非常感谢反馈。任何问题请联系我们


#4

你好,我也按照这个教程来 也清空了缓存 还是404.