Magento2插件开发:一个简单的 Hello World Code

当 magento2 发布官方版本后,magento2 的插件开发或者 magento2 hello world 的入门的非常受欢迎的,这就是为什么我们 magepalaza 会创立一个主题来介绍如何去新建一个简单的模块

你应该知道,插件是一个包含块 block、控制器、模型、帮助文件,配置文件 etc 的目录,并且是与特定业务逻辑相关的功能集合。这个配置文件 etc 目录包括后台配置项 admin acl / 后台菜单配置 admin menu / 配置文件 configuration. 在 magento2 中 插件是安装或放置在 magento 根目录下 app/code 中的,他的格式是 app/code//vendor 包名 modulenName 模块名。接下来 我们将按一下步骤,在 magento 新建一个 hello world 插件

在 magento 创建一个 hello world 插件#

创建一个 hello world 模块 你需要认真完成下面步骤

  • 第一步:创建 hello world 模块文件夹
  • 第二步:创建模块配置文件
  • 第三步:创建注册文件
  • 第四步:开启插件

1. 创建 hello world 模块文件夹#

插件的命名是这样的 如:扩展包名_插件名;下横线左边第一部分是扩展包名,下划线右边最后一部分是插件名。例如:Magento_HelloWorld, Mageplaza_PdfInvoice. 因此我们应该这样创建扩展包

app/code/Mageplaza/HelloWorld

2. 创建模块配置文件#

之后。我们必须创建 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

app/code/Mageplaza/HelloWorld/registration.php

填入以下代码

<?php
\Magento\Framework\Component\ComponentRegistrar::register(
    \Magento\Framework\Component\ComponentRegistrar::MODULE,
    'Mageplaza_HelloWorld',
    __DIR__
);

4. 开启插件#

在前 3 步 我们已经创建了 Hello World 插件,接下来我们要开启它。

创建完模块后,你执行这个命令

php bin/magento module:status

你会发现这个模块是 disable 未开启的

接着我们需要开始这个模块,请执行下面这个命令

php bin/magento module:enable Mageplaza_HelloWorld

另外一种开始方式是,你可以打开这个文件

app/etc/config.php

你会发现很长一列的插件在这里,Hello_World 配置如下

...
  'Mageplaza_HelloWorld' => 1,
  ...

至此 你的模块已经开启完毕

这步之后 当你打开浏览器访问你的站点,你或许会收到一个错误

请更新你的数据库,在你的 magento 根目录执行命令

php bin/magento setup:upgrade

执行完毕后,当你在浏览器打开你的站点,你或许会发现站点模板是凌乱的 你需要执行编译命令行修复它

php bin/magento setup:static-content:deploy

编译完成后,你可以在你的后台看到你的模块:System Configuration -> Advanced -> Disable Modules

现在我们可以创建个可控制器测试模块

在创建控制器之前,我们需要先为 Hello world 创建路由

路由在 mangento2 中分为 3 个部分 路由名,控制器名,方法名。如下所示

http://mageplaza.com/index.php/frontname/controller/action

添加路由 必须要创建 route.xml 文件

app/code/Mageplaza/HelloWorld/etc/frontend/routes.xml

这是一条前端路由,因此我们将其添加到 frontend / 文件夹中,否则我们需要将其添加到 adminhtml / 文件夹中

填入以下代码

<?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="Mageplaza_HelloWorld"/>
        </route>
    </router>
</config>

定义了第一部分的路由,URL 显示会如下

http://<yourhost.com>/helloworld/*

之后 我们继续创建控制器和方法

你需要创建下面这个文件夹

app/code/Mageplaza/HelloWorld/Controller/Index/Test.php

填入以下代码

<?php
namespace Mageplaza\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 测试

你的 URL 应该是这样

http://<yourhost.com>/helloworld/index/test

到这里完成以上步棸后,你的浏览器器将会输出 Hello World, 希望我们的引导是对于你是有用的,如果你有遇到任何问题,请留下你的评论,下一步,你可以学习如何创建一个控制器

文章非本人所作,手动翻译于 www.mageplaza.com/magento-2-module...

里面还有很多 magento2 的文章,英语好的可以直接看,差些的可以只看图片、源代码,或者一键翻译

想学英语可以侧边翻译,看得多了就能读了,之后可能会翻译一些其他的技术文章,哈哈哈哈哈哈哈哈哈

个人博客停止维护,部分博客转载到这

  • 彼特城
  • 2020-07-28 21:41:00
本作品采用《CC 协议》,转载必须注明作者和本文链接
滴水穿石,石破天惊 ---- 晓疯子
zhaocrazy