Magento 2: A cosa servono i file `resources.xml`?


12

In Magento 2, uno dei file di configurazione XML che un modulo può avere è il resources.xmlfile. Ad esempio, il modulo di vendita ne ha uno

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

Qualcuno sa a cosa servono questi file in Magento 2? Sembrano essere il vecchio <resources/>nodo di primo livello di Magento 1 . Tuttavia, dal momento che Magento usi non più di installazione Modello di risorse / Migrazioni (invece Magento 2 classi usi a Setup/InstallSchema.php, Setup/InstallData.php, Setup/UpgradeSchema.php, Setup/UpgradeData.phpper l'installazione / script di migrazione-simili), non è al 100% chiaro quale sia la sales_setuprisorsa è per.

Per la risorsa non di installazione, è solo un altro modo per aggiungere una classe di connessione al database con credenziali / informazioni sulla stringa di connessione diverse? O qualcos'altro?


alan, per favore, guarda questo file vendor\magento\framework\App\etc\resources.xsd"(4,41). può dare qualsiasi idea
Amit Bera

1
@AmitBera Indica come dovrebbero apparire i dati in resources.xml, non ci dice per cosa il sistema utilizza questi file.
Alan Storm,

Scusate, non avevo idea chiara di questo. Se avrò qualche punto,
posterò

Risposte:


10

Penso che le risorse siano relative all'attuale connessione al database. M1 in passato aveva qualcosa del genere:

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

quindi direi che il file delle risorse è il successore di quale fosse la connessione.

Non sono sicuro che il nodo _setup fornisca molto valore sopra l'altra riga poiché abbiamo questo codice

lib / interno / Magento / quadro / App / ResourceConnection / config.php

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

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

e anche 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;
    }
}

Ho dato una rapida occhiata ad alcuni dei moduli enterprise per vedere se questo fa più luce sull'uso del resources.xmlfile (dato che più dbs è apparentemente una funzione M2 Enterprise) ma l'unico uso che ho incontrato finora utilizza anche solo estende da core.

La mia impressione è che bisognerebbe creare connessioni db aggiuntive in app/etc/env.phpcui poi si possano usare quei valori per sovrascrivere quelli spediti nei resource.xmlfile predefiniti (cioè solo la 1 connessione predefinita).


2
Riassumendo: 'resources.xml' consente allo sviluppatore dell'estensione di specificare le informazioni sull'ereditarietà delle risorse e le informazioni sul collegamento delle connessioni.
Anton Kril,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.