Visão geral dos arquivos de configuração do módulo
As responsabilidades dos config.xml
O arquivo de configuração usado em versões anteriores do Commerce agora é dividido entre vários arquivos, localizados em vários diretórios de módulo. Os 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 comércio 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—Estágios sã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
os arquivos são mesclados com outrosmodule.xml
arquivos. -
Escopo da 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 carregado com no estágio com outros módulos doadminhtml
configurações. 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 o componente está localizado. Os valores típicos sãoapp/code
ouvendor
relativo ao diretório de instalação do Commerce. -
<vendorname>
é o nome do fornecedor do componente; por exemplo, o nome do fornecedor do Commerce émagento
. -
<component-type>
O é 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 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 em $idAttributes
matriz declarada como seu identificador. Esse identificador deve ser exclusivo para todos os nós aninhados no mesmo nó principal.
Algoritmo de mesclagem do aplicativo de comércio:
- 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
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
O fornece as seguintes interfaces:
- Framework\Config\ConverterInterface, que converte o XML em uma representação da matriz das configurações na memória.
- Framework\Config\DataInterface, que recupera os dados de configuração em um escopo especificado.
- Framework\Config\FileResolverInterface, que identifica o local dos arquivos pelos quais serão lidos 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.