Visão geral dos arquivos de configuração do módulo
As responsabilidades do arquivo de configuração config.xml
usado em versões anteriores do Commerce agora são divididas entre vários arquivos, localizados em vários diretórios de módulo. Vários arquivos de configuração do Commerce são carregados sob demanda somente quando um módulo solicita um tipo de configuração específico.
Você pode usar esses arquivos, também conhecidos como tipos de configuração, para personalizar aspectos específicos do comportamento do módulo.
Vários módulos podem declarar arquivos de configuração que afetam o mesmo tipo de configuração (por exemplo, eventos), e esses vários arquivos de configuração são mesclados.
Os termos a seguir são comuns usados neste tópico:
-
Objeto de configuração — A biblioteca ou classe de Commerce responsável por definir e validar o tipo de configuração. Por exemplo, o objeto de configuração para
config.xml
é Magento\Framework\App\Config. -
Estágio de configuração—Os estágios estão definidos como principal, global e área. Cada estágio determina quando o tipo de configuração é carregado e mesclado com tipos de configuração com o mesmo nome. Por exemplo,
module.xml
arquivos são mesclados com outrosmodule.xml
arquivos. -
Escopo de configuração — Complementar aos estágios de configuração, um escopo define o modelo de tipo de configuração. Por exemplo,
adminhtml
é um escopo de área que é carregado com no estágio com as configuraçõesadminhtml
de outros módulos. Para obter mais informações, consulte Módulos e áreas.
Carregamento e mesclagem de configuração
Esta seção discute como os arquivos de configuração são carregados e mesclados.
Como o Commerce carrega arquivos de configuração
O Commerce carrega os arquivos de configuração na seguinte ordem (todos os caminhos são relativos ao diretório de instalação do Commerce):
- Configuração primária (app/etc/di.xml). Esse arquivo é usado para inicializar o Commerce.
- Configurações globais dos módulos (
<your component base dir>/<vendorname>/<component-type>-<component-name>/etc/*.xml
). Coleta determinados arquivos de configuração de todos os módulos e os mescla. - Configuração específica de área dos módulos (
<your component base dir>/<vendorname>/<component-type>-<component-name>/etc/<area>/*.xml
). Coleta arquivos de configuração de todos os módulos e os mescla à configuração global. Algumas configurações específicas de área podem substituir ou estender a configuração global.
onde
-
<your component base dir>
é o diretório base no qual seu componente está localizado. Os valores típicos sãoapp/code
ouvendor
relativos ao diretório de instalação do Commerce. -
<vendorname>
é o nome do fornecedor do componente; por exemplo, o nome do fornecedor da Commerce émagento
. -
<component-type>
é um dos seguintes:module-
: Uma extensão ou um módulo.theme-
: Tema.language-
: Pacote de idioma.
<magento_root>/app/design/frontend
ou <magento_root>/app/design/adminhtml
.<component-name>
: Nome do seu componente conforme definido em composer.json.
Mesclagem do arquivo de configuração
Os nós nos arquivos de configuração são mesclados com base em seus XPaths totalmente qualificados, que têm um atributo especial definido na matriz $idAttributes
declarada como seu identificador. Esse identificador deve ser exclusivo para todos os nós aninhados no mesmo nó principal.
algoritmo de mesclagem de aplicativos do Commerce:
- Se os identificadores de nó forem iguais (ou se não houver um identificador definido), todo o conteúdo subjacente no nó (atributos, nós secundários e conteúdo escalar) será substituído.
- Se os identificadores de nó não forem iguais, o nó será um novo filho do nó pai.
- Se o documento original tiver vários nós com o mesmo identificador, um erro será acionado porque os identificadores não podem ser diferenciados.
Depois que os arquivos de configuração forem mesclados, o documento resultante conterá todos os nós dos arquivos originais.
Tipos, objetos e interfaces de configuração
As seções a seguir fornecem informações sobre tipos de configuração, seus objetos de configuração correspondentes e interfaces que você pode usar para trabalhar com os objetos:
Tipos e objetos de configuração
A tabela a seguir mostra cada tipo de configuração e o objeto de configuração do Commerce com o qual ele está relacionado.
address_formats.xml
analytics.xml
catalog_attributes.xml
config.php
e 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 configuração
Você pode interagir com arquivos de configuração usando interfaces em Magento\Framework\Config.
Você pode usar essas interfaces se criar um tipo de configuração.
Magento\Framework\Config
fornece as seguintes interfaces:
- Framework\Config\ConverterInterface, que converte o XML em uma representação de matriz na memória das configurações.
- Framework\Config\DataInterface, que recupera os dados de configuração em um escopo especificado.
- Framework\Config\FileResolverInterface, que identifica o local dos arquivos a serem lidos por Magento\Framework\Config\ReaderInterface.
- Framework\Config\ReaderInterface, que lê os dados de configuração do armazenamento e seleciona o armazenamento do qual lê.
Ou seja, o sistema de arquivos, o banco de dados e outros armazenamentos mesclam os arquivos de configuração de acordo com as regras de mesclagem e validam os arquivos de configuração com os esquemas de validação.
- Framework\Config\SchemaLocatorInterface, que localiza o esquema XSD.
- Framework\Config\ScopeListInterface, que retorna uma lista de escopos.
- Framework\Config\ValidationStateInterface, que recupera o estado de validação.