ÃÛ¶¹ÊÓƵ

Overview of module configuration files

The responsibilities of the config.xml configuration file used in earlier versions of Commerce is now divided between several files, located in various module directories. Commerce’s multiple configuration files load on demand only when a module requests a specific configuration type.

You can use these files—also referred to as configuration types—to customize specific aspects of your module’s behavior.

Multiple modules can declare configuration files that affect the same configuration type (for example, events), and these multiple configuration files are merged.

Following are common terms used in this topic:

  • Configuration object—The Commerce library or class that is responsible for defining and validating the configuration type. For example, the configuration object for config.xml is .

  • Configuration stage—Stages are defined as primary, global, and area. Each stage determines when configuration type is loaded and merged with same-named configuration types. For example, module.xml files are merged with other module.xml files.

  • Configuration scope—Complementary to configuration stages, a scope defines the configuration type model. For example, adminhtml is an area scope that is loaded with at the stage with other modules’ adminhtml configurations. For more information, see .

Configuration load and merge

This section discusses how configuration files are loaded and merged.

How Commerce loads configuration files

Commerce loads configuration files in the following order (all paths are relative to your Commerce installation directory):

  • Primary configuration (). This file is used to bootstrap Commerce.
  • Global configurations from modules (<your component base dir>/<vendorname>/<component-type>-<component-name>/etc/*.xml). Collects certain configuration files from all modules and merges them together.
  • Area-specific configuration from modules (<your component base dir>/<vendorname>/<component-type>-<component-name>/etc/<area>/*.xml). Collects configuration files from all modules and merges them into the global configuration. Some area-specific configurations can override or extend the global configuration.

where

  • <your component base dir> is the base directory in which your component is located. Typical values are app/code or vendor relative to the Commerce installation directory.

  • <vendorname> is the component’s vendor name; for example, Commerce’s vendor name is magento.

  • <component-type> is one of the following:

    • module-: An extension or module.
    • theme-: Theme.
    • language-: Language package.
INFO
Currently, themes are located under <magento_root>/app/design/frontend or <magento_root>/app/design/adminhtml.
  • <component-name>: Name of your component as defined in .

Configuration file merge

Nodes in configuration files are merged based on their fully qualified XPaths, which has a special attribute defined in $idAttributes array declared as its identifier. This identifier must be unique for all nodes nested under the same parent node.

Commerce application merge algorithm:

  • If node identifiers are equal (or if there is no identifier defined), all underlying content in the node (attributes, child nodes, and scalar content) is overridden.
  • If node identifiers are not equal, the node is a new child of the parent node.
  • If the original document has multiple nodes with the same identifier, an error is triggered because the identifiers cannot be distinguished.

After configuration files are merged, the resulting document contains all nodes from the original files.

INFO
You can use class for debugging and understanding the logic behind and process.

Configuration types, objects, and interfaces

The following sections provide information about configuration types, their corresponding configuration objects, and interfaces that you can use to work with the objects:

Configuration types and objects

The following table shows each configuration type and the Commerce configuration object to which it relates.

Configuration file
Description
Stage
Configuration object
address_formats.xml
Address format declaration
primary, global
acl.xml
global
analytics.xml
[Advanced reporting]https://developer.adobe.com/commerce/php/development/advanced-reporting/data-collection/)
primary, global
cache.xml
Cache type declaration
primary, global
catalog_attributes.xml
Catalog attributes configuration
global
config.php and env.php
Deployment configuration
These files are readable/writeable by the internal config processor.
Has no object, cannot be customized
config.xml
System configuration
primary, global
communication.xml
global
crontab.xml
Configures cron groups
global
cron_groups.xml
Specifies cron group options
global
db_schema.xml
global
di.xml
configuration
primary, global, area
eav_attributes.xml
Provides EAV attributes configuration
global
email_templates.xml
Email templates configuration
global
esconfig.xml
Search engine locale stopwords config
global
events.xml
Event/observer configuration
global, area
export.xml
Export entity configuration
global
extension_attributes.xml
global
fieldset.xml
Defines fieldsets
global
indexer.xml
global
import.xml
Declares import entities
global
menu.xml
Defines menu items for the Admin
adminhtml
module.xml
Defines module config data and soft dependency
primary, global
mview.xml
primary, global
payment.xml
Payment module configuration
primary, global
persistent.xml
configuration file
global
pdf.xml
PDF settings
global
product_options.xml
Provides product options configuration
global
product_types.xml
Defines product type
global
queue_consumer.xml
global
queue_publisher.xml
global
queue_topology.xml
global
reports.xml
global
resources.xml
Defines module resource
global
routes.xml
configuration
area
sales.xml
Defines sales total configuration
global
search_engine.xml
Provides search engine configuration
global
search_request.xml
Defines catalog search configuration
global
sections.xml
Defines actions that trigger cache invalidation for private content blocks
frontend
system.xml
Defines options for system configuration page
adminhtml
validation.xml
Module validation configuration file
global
view.xml
Defines Vendor_Module view config values
global
webapi.xml
global
webapi_async.xml
global
widget.xml
Defines widgets
global
zip_codes.xml
Defines zip code format for each country
global

Configuration interfaces

You can interact with configuration files using interfaces under .

You can use these interfaces if you create a configuration type.

Magento\Framework\Config provides the following interfaces:

  • , which converts the XML into an in-memory array representation of the configurations.
  • , which retrieves the configuration data in a specified scope.
  • , which identifies the location of files to be read by .
  • , which reads the configuration data from storage and selects the storage from which it reads.

That is, the file system, database, other storage merges the configuration files according to the merging rules, and validates the configuration files with the validation schemas.

  • , which locates the XSD schema.
  • , which returns a list of scopes.
  • , which retrieves the validation state.
recommendation-more-help
386822bd-e32c-40a8-81c2-ed90ad1e198c