Magento 2: Для чого використовуються файли `resource.xml`?


12

У Magento 2 одним із файлів конфігурації XML, який може мати модуль, є resources.xmlфайл. Наприклад, модуль продажу має один

#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? Вони здаються старим <resources/>вузлом верхнього рівня Magento 1 . Однак, так як Magento більше не використовує налаштування ресурсів Model / Міграції (замість Magento 2 використовує класи Setup/InstallSchema.php, Setup/InstallData.php, Setup/UpgradeSchema.php, Setup/UpgradeData.phpдля установки / перенесення подібних скриптів), його не 100% ясно , що sales_setupресурс для.

Чи не просто ресурс установки, це лише ще один спосіб додати клас підключення до бази даних з різними обліковими даними / інформацією про рядок з'єднання? Або щось інше?


alan, Можна, будь ласка, подивіться на цей файл vendor\magento\framework\App\etc\resources.xsd"(4,41). можливо, можна дати будь-яку ідею
Аміт Бера

1
@AmitBera Це говорить про те, як повинні з’являтися дані в resource.xml, але це не говорить нам, для чого система використовує ці файли.
Алан Шторм

Вибачте, я не мав чіткого уявлення з цього приводу. Якщо я отримаю якусь точку, тоді я
допишу

Відповіді:


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 / Internal / Magento / Framework / 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файлу (так як кілька dbs, мабуть, є функцією M2 Enterprise), але єдине використання, яке я натрапив поки що, також використовує лише розширення з core.

Моя думка полягає в тому, що потрібно створити додаткові з'єднання db, в app/etc/env.phpяких потім ви зможете використовувати ці значення, щоб перекрити ті, що надходять у resource.xmlфайли за замовчуванням (тобто лише 1 з'єднання за замовчуванням).


2
Просто підсумовуючи: 'resource.xml' дозволяє розробнику розширення вказувати інформацію про спадкування ресурсів та інформацію, що пов'язує з'єднання.
Антон Криль
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.