Présentation des fichiers de configuration du module
Les responsabilités du fichier de configuration config.xml
utilisé dans les versions antérieures de Commerce sont désormais réparties entre plusieurs fichiers, situés dans différents répertoires de module. Commerce charge plusieurs fichiers de configuration à la demande uniquement lorsqu’un module demande un type de configuration spécifique.
Vous pouvez utiliser ces fichiers (également appelés types de configuration) pour personnaliser des aspects spécifiques du comportement de votre module.
Plusieurs modules peuvent déclarer des fichiers de configuration qui affectent le même type de configuration (par exemple, des événements) et ces plusieurs fichiers de configuration sont fusionnés.
Voici les termes courants utilisés dans cette rubrique :
-
Objet de configuration : bibliothèque ou classe Commerce chargée de définir et de valider le type de configuration. Par exemple, l’objet de configuration pour
config.xml
est Magento\Framework\App\Config. -
Étape de configuration : les étapes sont définies comme principale, globale et zone. Chaque étape détermine à quel moment le type de configuration est chargé et fusionné avec des types de configuration portant le même nom. Par exemple, les fichiers
module.xml
sont fusionnés avec d’autres fichiersmodule.xml
. -
Portée de la configuration : en complément des étapes de configuration, une portée définit le modèle de type de configuration. Par exemple,
adminhtml
est une étendue de zone qui est chargée avec à l’étape avec les configurations deadminhtml
d’autres modules. Pour plus d’informations, voir Modules et zones.
Chargement et fusion de la configuration
Cette section explique comment les fichiers de configuration sont chargés et fusionnés.
Chargement des fichiers de configuration par Commerce
Commerce charge les fichiers de configuration dans l’ordre suivant (tous les chemins d’accès sont relatifs à votre répertoire d’installation Commerce) :
- Configuration du Principal (app/etc/di.xml). Ce fichier est utilisé pour amorcer Commerce.
- Configurations globales des modules (
<your component base dir>/<vendorname>/<component-type>-<component-name>/etc/*.xml
). Collecte certains fichiers de configuration de tous les modules et les fusionne. - Configuration spécifique à une zone à partir des modules (
<your component base dir>/<vendorname>/<component-type>-<component-name>/etc/<area>/*.xml
). Collecte les fichiers de configuration de tous les modules et les fusionne dans la configuration globale. Certaines configurations spécifiques à une zone peuvent remplacer ou étendre la configuration globale.
où
-
<your component base dir>
est le répertoire de base dans lequel se trouve votre composant. Les valeurs standard sontapp/code
ouvendor
par rapport au répertoire d’installation de Commerce. -
<vendorname>
est le nom du fournisseur du composant ; par exemple, le nom du fournisseur du Commerce estmagento
. -
<component-type>
est l’un des éléments suivants :module-
: une extension ou un module.theme-
: thème.language-
: package de langue.
<magento_root>/app/design/frontend
ou <magento_root>/app/design/adminhtml
.<component-name>
: nom de votre composant tel que défini dans composer.json.
Fusion du fichier de configuration
Les nœuds dans les fichiers de configuration sont fusionnés en fonction de leurs XPaths complets, qui possèdent un attribut spécial défini dans $idAttributes
tableau déclaré comme identifiant. Cet identifiant doit être unique pour tous les nœuds imbriqués sous le même nœud parent.
Algorithme de fusion des applications Commerce :
- Si les identifiants de nœud sont égaux (ou s’il n’existe aucun identifiant défini), tout le contenu sous-jacent dans le nœud (attributs, nœuds enfants et contenu scalaire) est remplacé.
- Si les identifiants de nœud ne sont pas égaux, le nœud est un nouveau enfant du nœud parent.
- Si le document d’origine comporte plusieurs nœuds avec le même identifiant, une erreur est déclenchée, car les identifiants ne peuvent pas être distingués.
Une fois les fichiers de configuration fusionnés, le document obtenu contient tous les nœuds des fichiers d’origine.
Types de configuration, objets et interfaces
Les sections suivantes fournissent des informations sur les types de configuration, les objets de configuration correspondants et les interfaces que vous pouvez utiliser pour travailler avec les objets :
Types de configuration et objets
Le tableau ci-dessous présente chaque type de configuration et l’objet de configuration Commerce auquel il se rapporte.
address_formats.xml
catalog_attributes.xml
config.php
et env.php
communication.xml
eav_attributes.xml
email_templates.xml
esconfig.xml
extension_attributes.xml
menu.xml
module.xml
product_options.xml
queue_consumer.xml
queue_publisher.xml
queue_topology.xml
resources.xml
search_engine.xml
search_request.xml
sections.xml
system.xml
validation.xml
view.xml
webapi_async.xml
zip_codes.xml
Interfaces de configuration
Vous pouvez interagir avec les fichiers de configuration à l’aide des interfaces sous Magento\Framework\Config.
Vous pouvez utiliser ces interfaces si vous créez un type de configuration.
Magento\Framework\Config
fournit les interfaces suivantes :
- Framework\Config\ConverterInterface, qui convertit le code XML en une représentation de tableau en mémoire des configurations.
- Framework\Config\DataInterface, qui récupère les données de configuration dans une portée spécifiée.
- Framework\Config\FileResolverInterface, qui identifie l'emplacement des fichiers à lire par Magento\Framework\Config\ReaderInterface.
- Framework\Config\ReaderInterface, qui lit les données de configuration du stockage et sélectionne le stockage à partir duquel il lit.
En d’autres termes, le système de fichiers, la base de données et d’autres solutions de stockage fusionnent les fichiers de configuration en fonction des règles de fusion et valident les fichiers de configuration avec les schémas de validation.
- Framework\Config\SchemaLocatorInterface, qui localise le schéma XSD.
- Framework\Config\ScopeListInterface, qui renvoie une liste de portées.
- Framework\Config\ValidationStateInterface, qui récupère l’état de validation.