モジュール設定ファイルの概要
以前のバージョンのCommerceで使用されていたconfig.xml設定ファイルの責任は、様々なモジュールディレクトリにある複数のファイルに分割されるようになりました。 Commerceの複数の設定ファイルは、モジュールが特定の設定タイプをリクエストした場合にのみ、オンデマンドで読み込まれます。
これらのファイル(設定タイプとも呼ばれます)を使用して、モジュールの動作の特定の側面をカスタマイズできます。
複数のモジュールで、同じ設定タイプ(イベントなど)に影響を与える設定ファイルを宣言でき、これらの複数の設定ファイルがマージされます。
このトピックで使用される一般的な用語は次のとおりです。
-
設定オブジェクト – 設定タイプの定義と検証を担当するCommerce ライブラリまたはクラス。 例えば、
config.xmlの設定オブジェクトはMagento\Framework\App\Configです。 -
設定ステージ - ステージはprimary、global、areaとして定義されます。 各ステージは、設定タイプが読み込まれ、同じ名前の設定タイプと結合されるタイミングを決定します。 例えば、
module.xml個のファイルが他のmodule.xml個のファイルと結合されます。 -
設定スコープ – 設定ステージを補完する、スコープは設定タイプモデルを定義します。 例えば、
adminhtmlは、他のモジュールのadminhtml設定と共にステージで読み込まれるエリアスコープです。 詳しくは、 モジュールとエリア を参照してください。
設定の読み込みと結合
この節では、設定ファイルの読み込みと結合の方法について説明します。
Commerceによる設定ファイルの読み込み方法
Commerceは、次の順序で設定ファイルを読み込みます(すべてのパスはCommerce インストールディレクトリに関連しています)。
- プライマリ設定(app/etc/di.xml)。 このファイルは、Commerceのブートストラップに使用されます。
- モジュール (
<your component base dir>/<vendorname>/<component-type>-<component-name>/etc/*.xml)のグローバル設定。 すべてのモジュールから特定の設定ファイルを収集し、それらを結合します。 - モジュール (
<your component base dir>/<vendorname>/<component-type>-<component-name>/etc/<area>/*.xml)の領域固有の設定。 すべてのモジュールから設定ファイルを収集し、それらをグローバル設定にマージします。 一部の領域固有の設定は、グローバル設定を上書きまたは拡張できます。
どこで
-
<your component base dir>は、コンポーネントが配置されているベース ディレクトリです。 一般的な値は、Commerce インストールディレクトリに対するapp/codeまたはvendorです。 -
<vendorname>はコンポーネントのベンダー名です。例えば、Commerceのベンダー名はmagentoです。 -
<component-type>は次のいずれかです:module-:拡張機能またはモジュール。theme-:テーマ。language-:言語パッケージ。
<magento_root>/app/design/frontendまたは<magento_root>/app/design/adminhtmlの下にあります。<component-name>: composer.jsonで定義されているコンポーネントの名前。
設定ファイルの結合
設定ファイル内のノードは、完全修飾XPathに基づいてマージされます。このXPathには、$idAttributes配列で定義された特殊属性が識別子として宣言されています。 この識別子は、同じ親ノードの下にネストされたすべてのノードに対して一意である必要があります。
Commerce アプリケーションの結合アルゴリズム:
- ノード識別子が同じ場合(または識別子が定義されていない場合)、ノード内のすべての基になるコンテンツ(属性、子ノード、スカラーのコンテンツ)が上書きされます。
- ノード識別子が等しくない場合、ノードは親ノードの新しい子になります。
- 元の文書に同じ識別子を持つ複数のノードがある場合、識別子を区別できないため、エラーがトリガーされます。
設定ファイルを結合すると、元のファイルのすべてのノードが結果のドキュメントに含まれます。
設定の種類、オブジェクト、インターフェイス
次の節では、設定タイプ、対応する設定オブジェクト、およびオブジェクトの操作に使用できるインターフェイスに関する情報を示します。
設定タイプとオブジェクト
次の表に、各設定タイプと、それに関連するCommerce設定オブジェクトを示します。
config.phpとenv.phpcommunication.xmlqueue_consumer.xmlqueue_publisher.xmlqueue_topology.xml設定インターフェイス
Magento\Framework\Configのインターフェイスを使用して、設定ファイルを操作できます。
これらのインターフェイスは、設定タイプを作成する場合に使用できます。
Magento\Framework\Configは次のインターフェイスを提供します。
- Framework\Config\ConverterInterface。XMLを設定のメモリ内の配列表現に変換します。
- Framework\Config\DataInterface。指定されたスコープ内の設定データを取得します。
- Framework\Config\FileResolverInterfaceです。Magento\Framework\Config\ReaderInterfaceが読み取るファイルの場所を特定します。
- Framework\Config\ReaderInterfaceは、ストレージから構成データを読み取り、読み取り元のストレージを選択します。
つまり、ファイルシステム、データベース、その他のストレージは、結合ルールに従って設定ファイルを結合し、検証スキーマを使用して設定ファイルを検証します。
- Framework\Config\SchemaLocatorInterface。XSD スキーマを検索します。
- Framework\Config\ScopeListInterface。スコープのリストを返します。
- Framework\Config\ValidationStateInterface。検証状態を取得します。