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 declareert u een nieuwe waarnemer.

Omdat het type gebeurtenisconfiguratie in Commerce bestaat, zijn de lader en het events.xsd validerende schema al aanwezig en functioneel.

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 de nieuwe modules een search.xml dossier hebben, worden zij samengevoegd met uw dossier wanneer het laadt.

Voorbeelden van gebruik

Een configuratietype maken:

  1. Maak uw XSD-bestand.

  2. Maak uw XML-bestand.

  3. Definieer het configuratieobject in de di.xml .

    Het volgende voorbeeld van Magento_Sales module di.xmlillustreert hoe een configuratievoorwerp als zou moeten kijken.

    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, de gekoppelde klassen Converter en SchemaLocator in.
    • Dan, verbindt de pdfConfigDataStorage virtuele typeknoop de lezerklasse aan een geval van Magento\Framework\Config\Data.
    • En tenslotte, verbindt de laatste typeknoop dat config gegevens virtueel type aan de Magento\Sales\Model\Order\Pdf\Configklasse, die voor eigenlijk het lezen van waarden binnen van die pdf.xmldossiers wordt gebruikt.
  4. Bepaal een lezer door Magento\Framework\Config\Reader\Filesystemklasse uit te breiden en de volgende parameters te herschrijven:

    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 te implementeren. Zie Magento_Analytics config reader

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 Commerce-versies in config.xml zijn geconfigureerd, worden 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 hebt, kunnen de XSD-bestanden voor het samengevoegde events.xml -bestand de naam events_merged.xsd krijgen.
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