Magento 2: À quoi servent les fichiers `resources.xml`?

12

Dans Magento 2, l'un des fichiers de configuration XML qu'un module peut avoir est un resources.xmlfichier. Par exemple, le module de vente en a un

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

Est-ce que quelqu'un sait à quoi servent ces fichiers dans Magento 2? Ils semblent être l'ancien <resources/>nœud de niveau supérieur de Magento 1 . Cependant, étant donné que Magento ne utilise plus Configuration des ressources Model / ( au lieu Magento Migration 2 utilise des classes dans Setup/InstallSchema.php, Setup/InstallData.php, Setup/UpgradeSchema.php, Setup/UpgradeData.phppour l' installation / la migration comme des scripts), ce ne est pas clair à 100% ce que la sales_setupressource est pour.

Pour la ressource non configurée, est-ce juste une autre façon d'ajouter une classe de connexion à la base de données avec différentes informations d'identification / chaîne de connexion? Ou autre chose?

Alan Storm
la source
alan, veuillez regarder ce fichier vendor\magento\framework\App\etc\resources.xsd"(4,41). peut donner n'importe quelle idée
Amit Bera
1
@AmitBera Cela indique comment les données dans resources.xml devraient apparaître, cela ne nous dit pas à quoi le système utilise ces fichiers.
Alan Storm
Désolé, je n'avais aucune idée claire à ce sujet. Si j'obtiens un point, je
posterai

Réponses:

10

Je pense que les ressources sont liées à la connexion à la base de données réelle. M1 dans le passé avait quelque chose comme ça:

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

Je dirais donc que le fichier de ressources est le successeur de la connexion.

Pas sûr que le nœud _setup fournisse beaucoup de valeur au-dessus de l'autre ligne car nous avons ce code dans

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

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

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

et aussi dans 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;
    }
}

J'ai jeté un coup d'œil à travers certains des modules d'entreprise pour voir si cela jette plus de lumière sur l'utilisation du resources.xmlfichier (car plusieurs dbs est apparemment une fonctionnalité M2 Enterprise) mais la seule utilisation que j'ai rencontrée jusqu'à présent utilise également uniquement les extensions de core.

Mon intuition est qu'il faudrait créer des connexions db supplémentaires dans app/etc/env.phplesquelles vous pourrez ensuite utiliser ces valeurs pour remplacer celles livrées dans les resource.xmlfichiers par défaut (c'est-à-dire juste la 1 connexion par défaut).

Kristof chez Fooman
la source
2
Pour résumer: 'resources.xml' permet au développeur d'extensions de spécifier les informations d'héritage des ressources et les informations de liaison de connexion.
Anton Kril