Magento 2: Wofür werden "resources.xml" -Dateien verwendet?

12

In Magento 2 ist eine der XML-Konfigurationsdateien, die ein Modul möglicherweise hat, resources.xmlfile. Zum Beispiel hat das Verkaufsmodul eins

#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>

Weiß jemand, wofür diese Dateien in Magento 2 verwendet werden? Sie scheinen der alte Magento 1- <resources/>Knoten der obersten Ebene zu sein . Da jedoch Magento nicht mehr Anwendungen Setup - Ressourcenmodell / Migrations (statt Magento 2 verwenden Klassen in Setup/InstallSchema.php, Setup/InstallData.php, Setup/UpgradeSchema.php, Setup/UpgradeData.phpfür die Installation / Migration wie Skripte), es ist nicht 100% klar , was die sales_setupRessource für ist.

Ist dies für die Nicht-Setup-Ressource nur eine andere Möglichkeit, eine Datenbankverbindungsklasse mit unterschiedlichen Anmeldeinformationen / Verbindungszeichenfolgeninformationen hinzuzufügen? Oder etwas anderes?

Alan Storm
quelle
alan, kann bitte diese datei anschauen vendor\magento\framework\App\etc\resources.xsd"(4,41). kann man keine Ahnung geben
Amit Bera
1
@AmitBera Damit wird festgelegt, wie die Daten in resources.xml aussehen sollen, und nicht, wofür das System diese Dateien verwendet.
Alan Storm
Entschuldigung, ich hatte keine klare Vorstellung davon. Wenn ich irgendeinen Punkt bekomme, dann poste ich
Amit Bera

Antworten:

10

Ich denke, die Ressourcen beziehen sich auf die tatsächliche Datenbankverbindung. M1 hatte in der Vergangenheit so etwas:

   <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>

Daher würde ich sagen, dass die Ressourcendatei der Nachfolger der Verbindung ist.

Wir sind uns nicht sicher, ob der _setup-Knoten einen großen Wert über der anderen Zeile liefert, da wir diesen Code haben

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

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

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

und auch in 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;
    }
}

Ich habe einige Unternehmensmodule kurz resources.xmldurchgesehen, um festzustellen, ob dies mehr Aufschluss über die Verwendung der Datei gibt (da mehrere DBS anscheinend eine M2 Enterprise-Funktion sind), aber die einzige Verwendung, die mir bisher begegnet ist, gilt auch nur für Erweiterungen von core.

Meine Vermutung ist, dass man zusätzliche Datenbankverbindungen erstellen müsste app/etc/env.php, mit denen Sie dann diese Werte verwenden können, um die in den Standarddateien resource.xml(dh nur die 1-Standardverbindung) gelieferten Werte zu überschreiben .

Kristof bei Fooman
quelle
2
Um es zusammenzufassen: 'resources.xml' ermöglicht es dem Erweiterungsentwickler, Informationen zur Ressourcenvererbung und Verbindungsverknüpfung anzugeben.
Anton Kril