Konfigurationstypen
Erweitern von Konfigurationstypen
Um einen vorhandenen Konfigurationstyp zu erweitern, müssen Sie nur eine Konfigurationsdatei in Ihrem Modul erstellen.
Um beispielsweise einen Ereignisbeobachter hinzuzufügen, erstellen Sie app/code/{VendorName}/{ModuleName}/etc/events.xml
und deklarieren Sie einen neuen Beobachter.
Da der Ereigniskonfigurationstyp in Commerce vorhanden ist, sind das Ladeprogramm und das events.xsd
Validierungsschema bereits vorhanden und funktionsfähig.
Ihre neue events.xml
wird automatisch aus Ihrem -Modul erfasst und mit anderen events.xml
-Dateien für andere Module zusammengeführt.
Konfigurationstypen erstellen
Um einen Konfigurationstyp zu erstellen, müssen Sie mindestens Folgendes hinzufügen:
- Ein Lader
- XSD-Validierungsschema
- XML-Konfigurationsdateien
Um beispielsweise einen Adapter für einen neuen Suchserver einzuführen, der Erweiterungen die Konfiguration der Indexierung seiner Entitäten in diesem Server ermöglicht, erstellen Sie:
- Ein Lader
- Eine XSD-Schemadatei
- Eine entsprechend benannte Konfigurationsdatei. Beispiel:
search.xml
. Diese Datei wird gelesen und anhand Ihres Schemas validiert. - Alle anderen Klassen, die für Ihre Arbeit erforderlich sind.
search.xml
-Datei haben, werden sie beim Laden mit Ihrer -Datei zusammengeführt.Anwendungsbeispiele
So erstellen Sie einen Konfigurationstyp:
-
Erstellen Sie Ihre XSD-Datei.
-
Erstellen Sie Ihre XML-Datei.
-
Definieren Sie Ihr Konfigurationsobjekt in Ihrem
di.xml
.Das folgende Beispiel aus der Datei ".xml“ des Moduls "Magento_Sales veranschaulicht, wie ein Konfigurationsobjekt aussehen sollte.
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>
- Der erste Typknoten legt den Dateinamen des Readers, die zugehörigen
Converter
undSchemaLocator
fest. - Anschließend hängt der Knoten vom Typ „Virtueller
pdfConfigDataStorage
" die Readerklasse an eine Instanz von Magento\Framework\Config\Data an. - Und schließlich hängt der letzte Typknoten diesen virtuellen Konfigurationstyp an die Klasse Magento\Sales\Model\Order\Pdf\Config an, die zum tatsächlichen Einlesen von Werten aus diesen PDFxml-Dateien verwendet wird.
- Der erste Typknoten legt den Dateinamen des Readers, die zugehörigen
-
Definieren Sie einen Reader, indem Sie die Klasse {0🔗Magento\Framework\Config\Reader\Filesystem} erweitern und die folgenden Parameter neu schreiben:
code language-php $_idAttributes // Array of node attribute IDs.
Beispiel:
<?php
/**
* Copyright [first year code created] Adobe
* All Rights Reserved.
*/
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
implementieren. Siehe Magento_Analytics-KonfigurationsleserNachdem Sie Ihren Reader definiert haben, verwenden Sie ihn zum Erfassen, Zusammenführen, Validieren und Konvertieren der Konfigurationsdateien in eine interne Array-Darstellung.
Validieren eines Konfigurationstyps
Jede Konfigurationsdatei wird anhand eines Schemas validiert, das für ihren Konfigurationstyp spezifisch ist. Beispiel: Ereignisse, die in früheren Commerce-Versionen in config.xml
konfiguriert wurden, werden jetzt in events.xml
konfiguriert.
Konfigurationsdateien können sowohl vor (optional) als auch nach dem Zusammenführen mehrerer Dateien, die denselben Konfigurationstyp betreffen, validiert werden. Sofern die Validierungsregeln für die einzelnen und die zusammengeführten Dateien nicht identisch sind, sollten Sie zwei Schemata zur Validierung der Konfigurationsdateien bereitstellen:
- Schema zur Validierung eines Kontakts
- Schema zur Validierung einer zusammengeführten Datei
Neue Konfigurationsdateien müssen von XSD-Validierungsschemata begleitet werden. Eine XML-Konfigurationsdatei und die zugehörige XSD-Validierungsdatei müssen denselben Namen haben.
Wenn Sie zwei XSD-Dateien für eine einzelne XML-Datei verwenden müssen, sollten die Namen der Schemata erkennbar und mit der XML-Datei verknüpft sein.
Wenn Sie eine events.xml
und eine erste events.xsd
haben, können die XSD-Dateien für die zusammengeführte events.xml
-Datei events_merged.xsd
benannt werden.
Um die Validierung einer XML-Datei anhand der entsprechenden XSD-Datei sicherzustellen, müssen Sie der XSD-Datei in der XML-Datei den Uniform Resource Name (URN) hinzufügen. Beispiel:
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager:etc/config.xsd">
Ihre IDE kann Ihre Konfigurationsdateien sowohl zur Laufzeit als auch während der Entwicklung überprüfen.