Magento 2: Para que são utilizados os arquivos `resources.xml`?

12

No Magento 2, um dos arquivos de configuração XML que um módulo pode ter é resources.xmlfile. Por exemplo, o módulo de vendas possui um

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

Alguém sabe para que esses arquivos são usados ​​no Magento 2? Eles parecem ser o antigo <resources/>nó de nível superior do Magento 1 . No entanto, desde Magento usos já não Setup modelo de recursos / Migrações (em vez Magento 2 usa classes em Setup/InstallSchema.php, Setup/InstallData.php, Setup/UpgradeSchema.php, Setup/UpgradeData.phppara instalar / migration-like roteiros), não é 100% claro o que o sales_setuprecurso é para.

Para o recurso não configurado, essa é apenas outra maneira de adicionar uma classe de conexão ao banco de dados com informações diferentes sobre credenciais / cadeia de conexão? Ou outra coisa?

Alan Storm
fonte
Alan, pode olhar para este arquivo vendor\magento\framework\App\etc\resources.xsd"(4,41). pode dar uma idéia
Amit Bera
1
@AmitBera Isso mostra como os dados em resources.xml devem aparecer, mas não nos diz para que o sistema usa esses arquivos.
Alan Storm
Desculpe, eu não tinha nenhuma ideia clara sobre este .Se eu recebo qualquer ponto, então eu vou postar
Amit Bera

Respostas:

10

Eu acho que os recursos estão relacionados à conexão real com o banco de dados. M1 no passado tinha algo parecido com isto:

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

então eu diria que o arquivo de recursos é o sucessor do que era a conexão.

Não temos certeza se o nó _setup fornece muito valor acima da outra linha, pois temos esse código em

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

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

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

e também em 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;
    }
}

Eu examinei rapidamente alguns módulos corporativos para ver se isso esclarece mais o uso do resources.xmlarquivo (como vários dbs aparentemente é um recurso do M2 Enterprise), mas o único uso que encontrei até agora também usa apenas estende de core.

Meu palpite é que seria necessário criar conexões db adicionais nas app/etc/env.phpquais então você pode usar esses valores para substituir os que são enviados nos resource.xmlarquivos padrão (ou seja, apenas a 1 conexão padrão).

Kristof na Fooman
fonte
2
Apenas para resumir: 'resources.xml' permite que o desenvolvedor de extensões especifique informações sobre herança de recursos e informações de vinculação de conexão.
Anton Kril