Configuratietypen

Configuratietypen uitbreiden

Om een bestaand configuratietype uit te breiden, moet u slechts een configuratiedossier in uw module tot stand brengen.

Als u bijvoorbeeld een gebeurteniswaarnemer wilt toevoegen, maakt u app/code/{VendorName}/{ModuleName}/etc/events.xml en een nieuwe waarnemer te verklaren.

Omdat het type van gebeurtenisconfiguratie in Handel bestaat, de lader en events.xsd het valideren van het schema is al aanwezig en werkt.

Uw nieuwe events.xml wordt automatisch verzameld uit uw module en samengevoegd met andere events.xml bestanden voor andere modules.

Configuratietypen maken

Om een configuratietype tot stand te brengen, moet u minstens toevoegen:

  • Een lader
  • XSD-validatieschema
  • XML-configuratiebestanden

Als u bijvoorbeeld een adapter wilt introduceren voor een nieuwe zoekserver waarmee extensies kunnen configureren hoe de entiteiten op die server worden geïndexeerd, maakt u:

  • Een lader
  • Een XSD-schemabestand
  • Een correct benoemd configuratiebestand. Bijvoorbeeld, search.xml. Dit bestand wordt op basis van uw schema gelezen en gevalideerd.
  • Alle andere klassen die vereist zijn voor uw werk.
INFO
Als nieuwe modules een search.xml worden deze bij het laden met uw bestand samengevoegd.

Voorbeelden van gebruik

Een configuratietype maken:

  1. Maak uw XSD-bestand.

  2. Maak uw XML-bestand.

  3. Definieer het configuratieobject in uw di.xml.

    Het volgende voorbeeld van de module Magento_Sales di.xml illustreert hoe een configuratievoorwerp zou moeten kijken als.

    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>
    
    • Het eerste type knooppunt stelt de bestandsnaam van de Reader in, gekoppeld Converter en SchemaLocator klassen.
    • Vervolgens worden de pdfConfigDataStorage Virtual Type-knooppunt koppelt de Reader-klasse aan een instantie van Magento\Framework\Config\Data.
    • Tot slot koppelt de laatste typeknoopknoop dat config gegevens virtueel type aan Magento\Sales\Model\Order\Pdf\Config klasse, die wordt gebruikt voor het lezen van waarden in pdf.xml bestanden.
  4. Een lezer definiëren door deze uit te breiden Magento\Framework\Config\Reader\Filesystem klasse en herschrijf de volgende parameters:

    code language-php
    $_idAttributes // Array of node attribute IDs.
    

Voorbeeld:

<?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>',
    ];
}
INFO
Als u liever uw eigen versie van de lezer maakt, kunt u dit doen door \Magento\Framework\Config\ReaderInterface. Zie Magento_Analytics config-lezer

Nadat u de lezer hebt gedefinieerd, kunt u deze gebruiken voor het verzamelen, samenvoegen, valideren en omzetten van de configuratiebestanden in een interne arrayrepresentatie.

Een configuratietype valideren

Elk configuratiedossier wordt bevestigd tegen een schema specifiek voor zijn configuratietype. Voorbeeld: gebeurtenissen, die in eerdere versies van de Handel werden geconfigureerd in config.xml, zijn nu geconfigureerd in events.xml.

Configuratiebestanden kunnen zowel voor (optioneel) als na het samenvoegen van meerdere bestanden met hetzelfde configuratietype worden gevalideerd. Tenzij de validatieregels voor de afzonderlijke en samengevoegde bestanden identiek zijn, moet u twee schema's opgeven voor het valideren van de configuratiebestanden:

  • Schema om een individu te valideren
  • Schema om een samengevoegd bestand te valideren

Nieuwe configuratiebestanden moeten vergezeld gaan van XSD-validatieschema's. Een XML-configuratiebestand en het bijbehorende XSD-validatiebestand moeten dezelfde naam hebben.

Als u twee XSD-bestanden moet gebruiken voor één XML-bestand, moeten de namen van de schema's herkenbaar zijn en aan het XML-bestand zijn gekoppeld.
Als u een events.xml bestand en een eerste events.xsd bestand, de XSD-bestanden voor het samengevoegde events.xml bestand kan een naam krijgen events_merged.xsd.
Om ervoor te zorgen dat een XML-bestand wordt gevalideerd door het juiste XSD-bestand, moet u de URL (Uniform Resource Name) toevoegen aan het XSD-bestand in het XML-bestand. Bijvoorbeeld:

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager:etc/config.xsd">

Uw IDE kan uw configuratiedossiers zowel runtime als tijdens ontwikkeling bevestigen.

recommendation-more-help
386822bd-e32c-40a8-81c2-ed90ad1e198c