Magento 2:`resources.xml`文件用于什么?


12

在Magento 2中,模块可能具有的XML配置文件之一是resources.xmlfile。例如,销售模块有一个

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

有谁知道这些文件在Magento 2中的用途是什么?它们似乎是旧的Magento 1顶级<resources/>节点。然而,由于Magento的不再使用设置资源模型/迁移(相反在Magento的2使用类Setup/InstallSchema.phpSetup/InstallData.phpSetup/UpgradeSchema.phpSetup/UpgradeData.php用于安装/迁移样脚本),它不是100%清除哪些sales_setup资源是。

对于非设置资源,这是否是添加具有不同凭据/连接字符串信息的数据库连接类的另一种方法?或者是其他东西?


alan,请看看这个文件vendor\magento\framework\App\etc\resources.xsd"(4,41)。可能有任何想法
阿米特·贝拉

1
@AmitBera告诉我们resources.xml中的数据应如何显示,而没有告诉我们系统将这些文件用于什么目的。
艾伦·风暴

对不起,我没有任何明确的想法这个。如果我得到任何一点的话,我会发布
阿米特·贝拉

Answers:


10

我认为资源与实际的数据库连接有关。过去的M1像这样:

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

所以我想说资源文件是连接的继承者。

不确定_setup节点是否在另一行之上提供了很多值,因为我们在

lib /内部/ Magento /框架/App/ResourceConnection/Config.php

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

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

以及在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;
    }
}

我快速浏览了一些企业模块,以查看是否可以更resources.xml清楚地了解文件的使用(因为多个数据库显然是M2 Enterprise功能),但是到目前为止,我遇到的唯一用途也只是扩展来自core

我的直觉是,需要创建其他数据库连接app/etc/env.php,然后在其中允许您使用这些值覆盖默认resource.xml文件中附带的值(即仅1个默认连接)。


2
总结一下:“ resources.xml”允许扩展开发人员指定资源继承信息和连接链接信息。
安东·克里尔
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.