設定タイプ

設定タイプの拡張

既存の設定タイプを拡張するには、モジュールに設定ファイルを作成するだけで済みます。

例えば、イベントオブザーバーを追加するには、app/code/{VendorName}/{ModuleName}/etc/events.xmlを作成し、新しいオブザーバーを宣言します。

イベント設定タイプはCommerceに存在するため、ローダーとevents.xsd検証用スキーマは既に存在し、機能しています。

新しいevents.xmlは、モジュールから自動的に収集され、他のモジュール用に他のevents.xml ファイルと結合されます。

設定タイプの作成

設定タイプを作成するには、少なくとも次を追加する必要があります。

  • ローダー
  • XSD検証スキーマ
  • XML設定ファイル

例えば、拡張機能がそのサーバー内でのエンティティのインデックス作成方法を設定できるようにする新しい検索サーバー用のアダプタを導入するには、次のように作成します。

  • ローダー
  • XSD スキーマファイル
  • 適切な名前の設定ファイル。 例:search.xml。 このファイルは、スキーマに対して読み取られ、検証されます。
  • あなたの仕事に必要なその他のクラス。
INFO
新しいモジュールにsearch.xml ファイルがある場合、読み込み時にファイルと結合されます。

使用例

設定タイプを作成するには:

  1. XSD ファイルを作成します。

  2. XML ファイルを作成します。

  3. di.xmlで設定オブジェクトを定義します。

    Magento_Sales モジュールのdi.xmlの次の例は、設定オブジェクトがどのように表示されるかを示しています。

    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>
    
    • 最初の型ノードは、ConverterおよびSchemaLocator個のクラスに関連付けられたReaderのファイル名を設定します。
    • 次に、pdfConfigDataStorage仮想タイプノードは、Magento\Framework\Config\Dataのインスタンスにリーダークラスをアタッチします。
    • 最後に、最後のtype ノードは、設定データの仮想タイプをMagento\Sales\Model\Order\Pdf\Config クラスに添付します。このクラスは、これらのpdf.xml ファイルから実際に値を読み取るために使用されます。
  4. Magento\Framework\Config\Reader\Filesystem クラスを拡張してリーダーを定義し、次のパラメーターを書き換えます。

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

例:

<?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>',
    ];
}
INFO
独自のバージョンのリーダーを作成する場合は、\Magento\Framework\Config\ReaderInterfaceを実装することで作成できます。 Magento_Analytics設定リーダーを参照してください

リーダーを定義した後、これを使用して設定ファイルを収集、結合、検証し、内部配列表現に変換します。

設定タイプの検証

各設定ファイルは、その設定タイプに固有のスキーマに対して検証されます。 例:以前のCommerce バージョンでconfig.xmlに設定されていたイベントが、events.xmlに設定されるようになりました。

設定ファイルは、同じ設定タイプに影響を与える複数のファイルを結合する前(オプション)と後の両方で検証できます。 個々のファイルと結合されたファイルの検証ルールが同じでない限り、設定ファイルを検証するための2つのスキーマを指定する必要があります。

  • 個人を検証するスキーマ
  • 結合されたファイルを検証するスキーマ

新しい設定ファイルには、XSD検証スキーマを添付する必要があります。 XML設定ファイルとそのXSD検証ファイルの名前は同じである必要があります。

1つのXML ファイルに2つのXSD ファイルを使用する必要がある場合、スキーマの名前は認識でき、XML ファイルに関連付けられている必要があります。
events.xml ファイルと最初のevents.xsd ファイルがある場合、結合されたevents.xml ファイルのXSD ファイルの名前はevents_merged.xsdになる可能性があります。
適切なXSD ファイルによるXML ファイルの検証を確実に行うには、XML ファイル内のXSD ファイルにUniform Resource Name (URN)を追加する必要があります。 例:

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

IDEでは、実行時と開発時の両方で設定ファイルを検証できます。

recommendation-more-help
commerce-operations-help-configuration