美文网首页
如何在Magento 2中创建模块

如何在Magento 2中创建模块

作者: 搬砖家 | 来源:发表于2018-06-06 12:41 被阅读360次

我们将讨论如何在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_HelloWorldMax_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

完成后,当您在浏览器中打开网站时,会看到网站的样式没有了。

magento 2 样式错误

在命令行执行以下命令来修复这个问题,如果你当前是开发者模式,需要在后面加上-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,那么我们的模块和控制器就创建成功了。

相关文章

网友评论

      本文标题:如何在Magento 2中创建模块

      本文链接:https://www.haomeiwen.com/subject/pslbsftx.html