Magento 2:「resources.xml」ファイルの使用目的は何ですか?


12

Magento 2では、モジュールに含まれるXML構成ファイルの1つがresources.xmlファイルです。たとえば、販売モジュールには1つの

#File: vendor/magento/module-sales/etc/resources.xml
<?xml version="1.0" encoding="UTF-8"?>
<!--
/**
 * Copyright © 2015 Magento. All rights reserved.
 * See COPYING.txt for license details.
 */
-->
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:App/etc/resources.xsd">
    <resource name="sales_setup" extends="core_setup" />
    <resource name="sales" extends="core" />
</config>

これらのファイルがMagento 2で使用されていることを誰もが知っていますか?それらは、古いMagento 1トップレベル<resources/>ノードのようです。しかし、Magentoのはもはや使用のセットアップリソース・モデル/移行するので(代わりにMagentoの2つの用途クラスではSetup/InstallSchema.phpSetup/InstallData.phpSetup/UpgradeSchema.phpSetup/UpgradeData.phpインストール/移行のようなスクリプトのために)、その100%でないものをクリアsales_setupリソースがためです。

非セットアップリソースの場合、これは、異なる資格情報/接続文字列情報を持つデータベース接続クラスを追加するための別の方法ですか?または、他の何か?


アラン、このファイルを見てくださいvendor\magento\framework\App\etc\resources.xsd"(4,41)。任意のアイデアを与えることができます
アミットベラ

1
@AmitBeraこれは、resources.xmlのデータがどのように表示されるかを示しますが、システムがこれらのファイルを使用する目的はわかりません。
アランストーム

申し訳ありませんが、これについて明確なアイデアはありませんでした。ポイントがあれば、投稿します
Amit Bera

回答:


10

リソースは実際のデータベース接続に関連していると思います。過去のM1には次のようなものがありました。

   <resources>
        <backup_setup>
            <setup>
                <module>Mage_Backup</module>
            </setup>
            <connection>
                <use>core_setup</use>
            </connection>
        </backup_setup>
        <backup_write>
            <connection>
                <use>core_write</use>
            </connection>
        </backup_write>
        <backup_read>
            <connection>
                <use>core_read</use>
            </connection>
        </backup_read>
    </resources>

したがって、リソースファイルは接続が何であるかを継承していると言えます。

このコードがあるので、_setupノードが他の行よりも多くの値を提供するかどうかはわかりません

lib / internal / Magento / Framework / App / ResourceConnection / Config.php

public function getConnectionName($resourceName)
{
    $connectionName = \Magento\Framework\App\ResourceConnection::DEFAULT_CONNECTION;

    $resourceName = preg_replace("/_setup$/", '', $resourceName);

また、setup / src / Magento / Setup / Module / Setup / ResourceConfig.php

class ResourceConfig implements \Magento\Framework\App\ResourceConnection\ConfigInterface
{
    /**
     * {@inheritdoc}
     */
    public function getConnectionName($resourceName)
    {
        return \Magento\Framework\App\ResourceConnection::DEFAULT_CONNECTION;
    }
}

いくつかのエンタープライズモジュールをざっと見て、resources.xmlファイルの使用が明らかになるかどうかを確認しました(複数のデータベースは明らかにM2エンタープライズ機能であるため)が、これまでに遭遇した唯一の用途は、からcore

私の考えでは、追加のdb接続を作成する必要がありapp/etc/env.phpます。この場合、これらの値を使用して、デフォルトresource.xmlファイルに含まれる値(つまり、1つのデフォルト接続)をオーバーライドできます。


2
要約すると、「resources.xml」により、拡張機能開発者はリソースの継承情報と接続リンク情報を指定できます。
アントンクリル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.