Magento2 中的模块

Magento 2中的模块

Magento 2以其可扩展性而闻名。Magento 2开源支持的可扩展性概念之一称为模块化。在本课程中,我们将学习什么是Magento 2模块。

课程概述

在本课程中,我们将学习以下内容:

  • Magento 2中的模块是什么?
  • 模块名称看起来如何?
  • Magento 2模块可以放在哪里?
  • 如何创建Magento 2模块?
  • 如何在Magento 2中注册模块?

什么是Magento 2模块?

Magento 2中的模块是提供业务逻辑和功能的独立组件或一组组件。Magento 2 Open Source是一个模块化应用程序,它支持模块化。这意味着所有功能都在称为模块的组件中实现和交付。组件也被称为扩展。模块和扩展基本上是同一件事。

Magento 2中的每个扩展或模块都提供了一组功能,这些功能支持模块的业务和功能逻辑。它允许为基于Magento 2的电子商务商店带来其他功能。

例子

让我们以目录模块(Catalog module)为例。Catalog module提供了一组不同的功能,包括类别管理,产品管理,对简单和虚拟产品的产品类型支持,目录浏览功能等。

此外,该模块还为其他模块提供了可扩展性点,从而允许使用附加功能扩展目录模块。这样的附加模块的一个示例是可下载产品模块。

Magento 2中的模块可以从一侧带来一组复杂的功能,而从另一侧则可以带来一个很小的功能,例如,可以在“产品”页面上添加一个图标。

模块名称

每个模块的名称由两部分组成。供应商名称和模块名称。这两个部分用_(下划线)或\(反斜杠)连接。因此,模块名称应遵循模式VendorName_ModuleName。例如,目录模块名称将是Magento供应商名称和Catalog模块名称的名称,即 Magento_CatalogMagento\Catalog

Magento 2中的模块应该放在哪里?

这是一个非常有趣的问题。在Magento 2应用程序中可以在两个位置放置模块。

第一个位置是app/code目录。该目录用于添加所有自定义和第三方Magento 2模块。开发机构,内部或内部开发人员通常使用此位置,以简化开发过程。

第二个位置是vendor目录。在composer软件包管理安装期间使用此目录。建议使用composer软件包管理器在Magento 2中安装模块,这是安装Magento 2模块的推荐方法。

在“ 项目结构概述”课程中了解有关Magento 2开源目录结构的更多信息。

如何创建一个模块?

为了创建模块,我们要做的第一件事是创建模块目录。通常,所有模块都位于app/code目录下。如果您遵循上一课,则该code目录应该在Magento 2项目的app目录下创建。

app目录内,让我们创建code目录。这是所有模块都应位于的目录。每个Magento 2模块都应位于app/code/VendorName/ModuleName目录位置下。

让我们创建一个供应商目录。在本课中,卖方是MageMastery。在app/code/MageMastery目录内,让我们创建一个模块目录。对于模块名称,这将是FirstModule目录名称。

每个Magento 2模块必须创建两个必需的文件。这些文件用于将模块通知给Magento 2。在registration.phpmodule.xml文件。

registration.php文件

registration.php文件用于将文件系统中的模块通知给Magento 2应用程序。它还用于提供Magento 2模块的位置。将新registration.php文件放在app/code/MageMastery/FirstModule目录中。

该文件的内容如下:

<?php

use Magento\Framework\Component\ComponentRegistrar;

ComponentRegistrar::register(
    ComponentRegistrar::MODULE,
    'MageMastery_FirstModule',
    __DIR__
);

Magento\Framework\Component\ComponentRegistrar类用于在Magento的2应用程序注册一个新的模块。

静态register()方法接受三个参数。该$componentType参数接受组件的类型,在模块的情况下为ComponentRegistrar::MODULEComponentRegistrar::MODULE是一个恒定Magento\Framework\Component\ComponentRegistrar类,建议使用此常量用于模块登记。

方法的第二个参数register()是模块的名称。如您所见,名称是VendorName_ModuleName。在上面的代码示例中,名称为MageMastery_FirstModule

最后一个参数是PHP __DIR__常量。它提供了模块的实际位置,它提供了模块的实际位置,如果Magento 2应用程序安装在/var/www/magento 目录中,它将解释为/var/www/magento/app/code/ magemastery /FirstModule

这是如何工作执行的?

registration.php文件的允许位置之一是app/code/VendorName/ModuleName目录(在本课程中,位置是app/code/MageMastery/FirstModule/)。registration.php在Magento 2开源应用程序启动期间,将扫描并执行该文件。该方法register()ComponentRegistrar类添加模块名称和它的位置为所有模块的位置的全局池。添加后,Magento 2 Open Source然后遍历所有已注册的模块路径,并读取module.xml文件的配置。

这就是为什么在Magento 2中成功注册模块时同时拥有这两个文件非常重要的原因。

module.xml文件

module.xml文件用于声明并提供有关模块名称以及对其他第三方或现成的Magento 2模块的任何依赖关系的信息。

module.xml文件是主模块的配置文件。需要将此文件放入模块etc目录中。让我们在app/code/MageMastery/FirstModule目录模块中创建目录。

XML配置文件的示例如下:

<?xml version="1.0"?>
<config>

</config>

这是基本的文件内容,几乎在所有Magento 2配置文件中都使用。在下一课中,我们将学习有关XML配置文件的更多信息。

此外,Magento 2中的所有XML文件在<config>节点中都包含2个属性。该xmlns属性提供XMLSchema实例的位置,该xsi:noNamespaceSchemaLocation属性提供Magento 2框架的XSD(XML Schema Definition)文件的路径。最后一个用于为配置文件提供XML验证和语法突出显示功能。

这些属性不是必需的,但是,建议遵循标准的Magento做法并将其包含到XML文件中。

结果,最终module.xml文件应如下所示:

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
    <module name="MageMastery_FirstModule" />
</config>

唯一需要添加的XML节点是<module />一个。该name属性应包括当前模块的名称,即MageMastery_FirstModule

如何注册一个模块?

最后一步是运行将启用和安装MageMastery_First模块的命令。

bin/magento setup:upgrade

您可能会注意到一个新模块已添加到模块列表中。

为了检查模块是否已在Magento 2应用程序中添加和启用。在这里,我使用grep命令来检查app/etc/config.php文件中的字符串。

grep MageMastery_FirstModule app/etc/config.php

因此,终端屏幕应显示一个

该值1表示已启用该模块,并且0表示已禁用该模块。从输出中可以看到,MageMastery_FirstModule设置为1,这表示该模块已成功在Magento 2开源应用程序中注册。

发表评论

电子邮件地址不会被公开。