Magento 2: Các tệp `resource.xml` được sử dụng để làm gì?


12

Trong Magento 2, một trong các tệp cấu hình XML mà mô-đun có thể có là resources.xmltệp. Ví dụ: mô-đun bán hàng có một

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

Có ai biết những tập tin này được sử dụng cho Magento 2 không? Chúng dường như là <resources/>nút cấp cao nhất Magento 1 cũ . Tuy nhiên kể từ khi Magento sử dụng không còn cài đặt Resource mẫu / Migrations (thay Magento 2 sử dụng các lớp trong Setup/InstallSchema.php, Setup/InstallData.php, Setup/UpgradeSchema.php, Setup/UpgradeData.phpđể cài đặt / di chuyển giống như kịch bản), chứ không phải 100% của nó rõ ràng những gì các sales_setuptài nguyên là dành cho.

Đối với tài nguyên không thiết lập, đây có phải là một cách khác để thêm lớp kết nối cơ sở dữ liệu với thông tin chuỗi thông tin / chuỗi kết nối khác nhau không? Hay cái gì khác?


alan, có thể hài lòng nhìn vào tập tin này vendor\magento\framework\App\etc\resources.xsd"(4,41). có thể đưa ra bất kỳ ý tưởng nào
Amit Bera

1
@AmitBera Điều đó cho biết dữ liệu trong resource.xml sẽ xuất hiện như thế nào, nó không cho chúng ta biết hệ thống sử dụng các tệp này để làm gì.
Bão Alan

Xin lỗi, tôi không có ý tưởng rõ ràng về điều này. Nếu tôi nhận được bất kỳ điểm nào thì tôi sẽ đăng
Amit Bera

Câu trả lời:


10

Tôi nghĩ rằng các tài nguyên có liên quan đến kết nối cơ sở dữ liệu thực tế. M1 trong quá khứ có một cái gì đó như thế này:

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

vì vậy tôi muốn nói rằng tệp tài nguyên là sự kế thừa cho kết nối.

Không chắc chắn rằng nút _setup cung cấp nhiều giá trị trên dòng khác vì chúng tôi có mã này trong

lib / nội bộ / Magento / Framework / Ứng dụng / ResourceConnection / Config.php

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

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

và cũng trong thiết lập / 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;
    }
}

Tôi đã xem qua một số mô-đun doanh nghiệp để xem liệu điều đó có làm sáng tỏ hơn việc sử dụng resources.xmltệp không (vì nhiều dbs rõ ràng là một tính năng M2 Enterprise) nhưng cách sử dụng duy nhất mà tôi đã gặp cho đến nay cũng chỉ sử dụng kéo dài từ core.

Linh cảm của tôi là người ta sẽ cần tạo thêm các kết nối db app/etc/env.php, sau đó cho phép bạn sử dụng các giá trị đó để ghi đè lên các giá trị được gửi trong các resource.xmltệp mặc định (tức là chỉ có 1 kết nối mặc định).


2
Chỉ cần tóm tắt: 'resource.xml' cho phép nhà phát triển mở rộng chỉ định thông tin kế thừa tài nguyên và thông tin liên kết kết nối.
Anton Kril
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.