Tipi di configurazione
Estendere i tipi di configurazione
Per estendere un tipo di configurazione esistente, devi solo creare un file di configurazione nel modulo.
Ad esempio, per aggiungere un osservatore evento, puoi creare app/code/{VendorName}/{ModuleName}/etc/events.xml
e dichiarare un nuovo osservatore.
Poiché il tipo di configurazione dell’evento esiste in Commerce, il caricatore e il events.xsd
lo schema di convalida è già presente e funzionante.
Nuovo events.xml
viene automaticamente raccolto dal modulo e unito ad altri events.xml
file per altri moduli.
Creare tipi di configurazione
Per creare un tipo di configurazione, devi aggiungere almeno:
- Un caricatore
- Schema di convalida XSD
- File di configurazione XML
Ad esempio, per introdurre un adattatore per un nuovo server di ricerca che consenta alle estensioni di configurare il modo in cui le relative entità vengono indicizzate in tale server, crea:
- Un caricatore
- Un file di schema XSD
- Un file di configurazione con nome appropriato. Ad esempio,
search.xml
. Questo file viene letto e convalidato in base allo schema. - Qualsiasi altra classe necessaria per il tuo lavoro.
search.xml
file, vengono uniti al file al momento del caricamento.Esempi di utilizzo
Per creare un tipo di configurazione:
-
Crea il file XSD.
-
Crea il file XML.
-
Definisci l’oggetto di configurazione nel
di.xml
.L'esempio seguente dal modulo Magento_Sales di.xml illustra l'aspetto di un oggetto di configurazione.
code language-xml <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd"> <type name="Magento\Sales\Model\Order\Pdf\Config\Reader"> <arguments> <argument name="fileName" xsi:type="string">pdf.xml</argument> <argument name="converter" xsi:type="object">Magento\Sales\Model\Order\Pdf\Config\Converter</argument> <argument name="schemaLocator" xsi:type="object">Magento\Sales\Model\Order\Pdf\Config\SchemaLocator</argument> </arguments> </type> <virtualType name="pdfConfigDataStorage" type="Magento\Framework\Config\Data"> <arguments> <argument name="reader" xsi:type="object">Magento\Sales\Model\Order\Pdf\Config\Reader</argument> <argument name="cacheId" xsi:type="string">sales_pdf_config</argument> </arguments> </virtualType> <type name="Magento\Sales\Model\Order\Pdf\Config"> <arguments> <argument name="dataStorage" xsi:type="object">pdfConfigDataStorage</argument> </arguments> </type> </config>
- Il primo nodo di tipo imposta il nome del file del Reader, associato
Converter
eSchemaLocator
classi. - Quindi, il
pdfConfigDataStorage
nodo di tipo virtuale associa la classe reader a un'istanza di Magento\Framework\Config\Data. - Infine, l’ultimo nodo di tipo collega il tipo virtuale di dati di configurazione al Magento\Sales\Model\Order\Pdf\Config che viene utilizzata per la lettura effettiva dei valori in da quelli pdf.xml file.
- Il primo nodo di tipo imposta il nome del file del Reader, associato
-
Definire un lettore estendendolo Magento\Framework\Config\Reader\Filesystem e riscrivi i seguenti parametri:
code language-php $_idAttributes // Array of node attribute IDs.
Esempio:
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Vendor\ModuleName\Model\Config;
use Magento\Framework\Config\Reader\Filesystem;
class Reader extends Filesystem
{
/**
* List of identifier attributes for merging
*
* @var array
*/
protected $_idAttributes = [
'</path/to/node_in_your_xml_file>' => '<identifierAttributeName>',
'</path/to/other/node_in_your_xml_file>' => '<identifierAttributeName>',
];
}
\Magento\Framework\Config\ReaderInterface
. Consulta Lettore di configurazione Magento_AnalyticsDopo aver definito il lettore, utilizzalo per raccogliere, unire, convalidare e convertire i file di configurazione in una rappresentazione array interna.
Convalidare un tipo di configurazione
Ogni file di configurazione viene convalidato in base a uno schema specifico per il relativo tipo di configurazione. Esempio: eventi che, nelle versioni precedenti di Commerce, erano configurati in config.xml
, sono ora configurati in events.xml
.
I file di configurazione possono essere convalidati prima (facoltativo) e dopo qualsiasi unione di più file che influiscono sullo stesso tipo di configurazione. A meno che le regole di convalida per i singoli file e i file uniti non siano identiche, è necessario fornire due schemi per la convalida dei file di configurazione:
- Schema per convalidare un singolo utente
- Schema per convalidare un file unito
I nuovi file di configurazione devono essere accompagnati da schemi di convalida XSD. Un file di configurazione XML e il relativo file di convalida XSD devono avere lo stesso nome.
Se è necessario utilizzare due file XSD per un singolo file XML, i nomi degli schemi devono essere riconoscibili e associati al file XML.
Se si dispone di events.xml
file e una prima events.xsd
file, i file XSD per il file unito events.xml
il file potrebbe essere denominato events_merged.xsd
.
Per garantire la convalida di un file XML tramite il file XSD appropriato, è necessario aggiungere il nome URN (Uniform Resource Name) al file XSD nel file XML. Ad esempio:
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager:etc/config.xsd">
L’IDE può convalidare i file di configurazione sia in fase di esecuzione che durante lo sviluppo.