Magento 2: ¿Para qué se utilizan los archivos `resources.xml`?


12

En Magento 2, uno de los archivos de configuración XML que puede tener un módulo es el resources.xmlarchivo. Por ejemplo, el módulo de ventas tiene 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>

¿Alguien sabe para qué se utilizan estos archivos en Magento 2? Parecen ser el antiguo <resources/>nodo de nivel superior de Magento 1 . Sin embargo, desde Magento ya no utiliza el programa de instalación de recursos Modelo / Migraciones (en lugar de Magento 2 clases de usos en Setup/InstallSchema.php, Setup/InstallData.php, Setup/UpgradeSchema.php, Setup/UpgradeData.phppara la instalación / migración como guiones), no es 100% claro lo que el sales_setuprecurso es para.

Para el recurso no configurado, ¿es esta otra forma de agregar una clase de conexión de base de datos con diferentes credenciales / información de cadena de conexión? ¿O algo mas?


Alan, ¿puedes mirar este archivo vendor\magento\framework\App\etc\resources.xsd"(4,41)? se puede dar alguna idea
— Amit Bera

1
@AmitBera Eso indica cómo deberían aparecer los datos en resources.xml, no nos dice para qué utiliza el sistema estos archivos.
— Alan Storm

Lo siento, no tenía una idea clara sobre esto. Si tengo algún punto, entonces publicaré
— Amit Bera

Respuestas:


10

Creo que los recursos están relacionados con la conexión real de la base de datos. M1 en el pasado tenía algo como esto:

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

entonces diría que el archivo de recursos es el sucesor de la conexión.

No estoy seguro de que el nodo _setup proporcione mucho valor por encima de la otra línea ya que tenemos este código en

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

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

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

y también en 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;
    }
}

Eché un vistazo rápido a algunos de los módulos empresariales para ver si eso arroja más luz sobre el uso del resources.xmlarchivo (ya que múltiples dbs aparentemente es una característica de M2 ​​Enterprise), pero el único uso que he encontrado hasta ahora también solo se extiende de core.

Mi presentimiento es que uno necesitaría crear conexiones db adicionales en las app/etc/env.phpque luego le permita usar esos valores para anular los que se envían en los resource.xmlarchivos predeterminados (es decir, solo la 1 conexión predeterminada).


2
Solo para resumir: 'resources.xml' permite al desarrollador de extensiones especificar información de herencia de recursos e información de enlace de conexión.
— Anton Kril
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.