模块配置文件概述

在Commerce早期版本中使用的config.xml配置文件的职责现在由位于各种模块目录中的多个文件分担。 仅当模块请求特定配置类型时,才会按需加载Commerce的多个配置文件。

您可以使用这些文件(也称为​ 配置类型)自定义模块行为的特定方面。

多个模块可以声明影响同一配置类型的配置文件(例如,事件),并且合并这些多个配置文件。

以下是本主题中使用的常用术语:

  • 配置对象 — 负责定义和验证配置类型的Commerce库或类。 例如,config.xml的配置对象是Magento\Framework\App\Config

  • 配置阶段 — 阶段定义为​ 全局 ​和​ 区域。 每个阶段确定何时加载配置类型并与同名配置类型合并。 例如,module.xml文件与其他module.xml文件合并。

  • 配置作用域 — 作用域是配置阶段的补充,它定义了配置类型模型。 例如,adminhtml是一个区域作用域,该作用域与其他模块的adminhtml配置一起在阶段加载。 有关详细信息,请参阅模块和区域

配置加载和合并

本节讨论如何加载和合并配置文件。

Commerce如何加载配置文件

Commerce按以下顺序加载配置文件(所有路径均相对于Commerce安装目录):

  • 主配置(app/etc/di.xml)。 此文件用于引导Commerce。
  • 来自模块(<your component base dir>/<vendorname>/<component-type>-<component-name>/etc/*.xml)的全局配置。 从所有模块中收集特定配置文件并将它们合并在一起。
  • 模块(<your component base dir>/<vendorname>/<component-type>-<component-name>/etc/<area>/*.xml)中特定于区域的配置。 从所有模块收集配置文件,并将其合并到全局配置中。 某些特定于区域的配置可能会覆盖或扩展全局配置。

位置

  • <your component base dir>是组件所在的基目录。 相对于Commerce安装目录,典型值为app/codevendor

  • <vendorname>是组件的供应商名称;例如,Commerce的供应商名称为magento

  • <component-type>是以下之一:

    • module-:扩展或模块。
    • theme-:主题。
    • language-:语言包。
INFO
目前,主题位于<magento_root>/app/design/frontend<magento_root>/app/design/adminhtml下。

配置文件合并

配置文件中的节点将根据其完全限定的XPath进行合并,该XPath具有在$idAttributes阵列中定义的特殊属性,该属性声明为其标识符。 对于嵌套在同一父节点下的所有节点,此标识符必须是唯一的。

Commerce应用程序合并算法:

  • 如果节点标识符相等(或未定义标识符),则覆盖节点中的所有基础内容(属性、子节点和标量内容)。
  • 如果节点标识符不相等,则该节点是父节点的新子节点。
  • 如果原始文档具有多个具有相同标识符的节点,则会触发错误,因为无法区分这些标识符。

合并配置文件后,生成的文档将包含原始文件中的所有节点。

INFO
您可以使用\Magento\Framework\Config\Reader\Filesystem类进行调试并了解配置文件加载器合并配置进程背后的逻辑。

配置类型、对象和界面

以下各节提供了有关配置类型、其相应的配置对象以及可用于处理这些对象的界面的信息:

配置类型和对象

下表显示了每个配置类型及其相关的Commerce配置对象。

配置文件
描述
Stage
配置对象
address_formats.xml
地址格式声明
主要,全局
\Magento\Customer\Model\Address\Config
acl.xml
访问控制列表
全局
\Magento\Framework\Acl\AclResource\Provider
analytics.xml
高级报告
主要,全局
\Magento\Analytics\Model\Config\Reader
cache.xml
缓存类型声明
主要,全局
\Magento\Framework\Cache\Config\Data
catalog_attributes.xml
目录属性配置
全局
\Magento\Catalog\Model\Attribute\Config\Data
config.phpenv.php
部署配置
这些文件可由内部配置处理器读取/写入。
没有对象,无法自定义
config.xml
系统配置
主要,全局
\Magento\Framework\App\Config
communication.xml
定义消息队列系统的方面
全局
\Magento\WebapiAsync\Code\Generator\Config\RemoteServiceReader\Communication
crontab.xml
配置cron组
全局
\Magento\Cron\Model\Config\Data
cron_groups.xml
指定cron组选项
全局
\Magento\Cron\Model\Groups\Config\Data
db_schema.xml
声明性架构
全局
Magento\Framework\Setup\Declaration\Schema
di.xml
依赖项注入配置
主要、全局、区域
\Magento\Framework\ObjectManager\Config
eav_attributes.xml
提供EAV属性配置
全局
\Magento\Eav\Model\Entity\Attribute\Config
email_templates.xml
电子邮件模板配置
全局
\Magento\Email\Model\Template\Config\Data
esconfig.xml
搜索引擎区域设置停用词配置
全局
\Magento\Elasticsearch\Model\Adapter\Index\Config\EsConfig
events.xml
事件/观察者配置
全局,区域
\Magento\Framework\Event
export.xml
导出实体配置
全局
\Magento\ImportExport\Model\Export\Config
extension_attributes.xml
扩展属性
全局
\Magento\Framework\Api\ExtensionAttribute\Config
fieldset.xml
定义字段集
全局
\Magento\Framework\DataObject\Copy\Config\Reader
indexer.xml
声明索引器
全局
\Magento\Framework\Indexer\Config\Reader
import.xml
声明导入实体
全局
\Magento\ImportExport\Model\Import\Config
menu.xml
定义管理员的菜单项
adminhtml
\Magento\Backend\Model\Menu\Config\Reader
module.xml
定义模块配置数据和软依赖关系
主要,全局
\Magento\Framework\Module\ModuleList\Loader
mview.xml
MView配置
主要,全局
\Magento\Framework\Mview\Config\Data
payment.xml
支付模块配置
主要,全局
\Magento\Payment\Model\Config
persistent.xml
Magento持续配置文件
全局
\Magento\Persistent\Helper\Data
pdf.xml
PDF设置
全局
\Magento\Sales\Model\Order\Pdf\Config\Reader
product_options.xml
提供产品选项配置
全局
\Magento\Catalog\Model\ProductOptions\Config
product_types.xml
定义产品类型
全局
\Magento\Catalog\Model\ProductTypes\Config
queue_consumer.xml
定义现有队列与其使用者之间的关系
全局
\Magento\Framework\MessageQueue\Consumer\Config\Xml\Reader
queue_publisher.xml
定义发布主题的Exchange。
全局
\Magento\WebapiAsync\Code\Generator\Config\RemoteServiceReader\Publisher
queue_topology.xml
定义邮件路由规则,声明队列和交换
全局
\Magento\Framework\MessageQueue\Topology\Config\Xml\Reader
reports.xml
高级报告
全局
\Magento\Analytics\ReportXml\Config
resources.xml
定义模块资源
全局
\Magento\Framework\App\ResourceConnection\Config\Reader
routes.xml
路由配置
区域
Magento\Framework\App\Route\Config
sales.xml
定义销售总额配置
全局
\Magento\Sales\Model\Config\Data
search_engine.xml
提供搜索引擎配置
全局
Magento\Search\Model\SearchEngine\Config
search_request.xml
定义目录搜索配置
全局
\Magento\Framework\Search\Request\Config
sections.xml
定义触发专用内容块缓存失效的操作
前端
SectionInvalidationConfigReader
system.xml
定义系统配置页面的选项
adminhtml
\Magento\Framework\App\Config
validation.xml
模块验证配置文件
全局
\Magento\Framework\Validator\Factory
view.xml
定义Vendor_Module视图配置值
全局
\Magento\Framework\View\Config
webapi.xml
配置Web API
全局
\Magento\Webapi\Model\Config
webapi_async.xml
定义REST自定义路由
全局
\Magento\WebapiAsync\Model\ServiceConfig
widget.xml
定义构件
全局
\Magento\Widget\Model\Config\Reader
zip_codes.xml
定义每个国家/地区的邮政编码格式
全局
\Magento\Directory\Model\Country\Postcode\Config\Data

配置界面

可以使用Magento\框架\配置下的接口与配置文件进行交互。

如果您创建配置类型,则可以使用这些接口。

Magento\Framework\Config提供以下界面:

即文件系统、数据库、其它存储根据合并规则合并配置文件,并用验证模式验证配置文件。

recommendation-more-help
386822bd-e32c-40a8-81c2-ed90ad1e198c