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


2
Um es zusammenzufassen: 'resources.xml' ermöglicht es dem Erweiterungsentwickler, Informationen zur Ressourcenvererbung und Verbindungsverknüpfung anzugeben.
— Anton Kril
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.