ReverseMetadataMerge trong các thành phần UI là gì?


9

Khi tôi xem tài liệu về các thành phần UI , tôi nhận thấy như sau:

<item name="reverseMetadataMerge" xsi:type="boolean">true</item>

Bây giờ, hầu hết các đối số đều khá tự giải thích về những gì họ làm, hoặc tôi đã biết điều đó, nhưng reverseMetadataMergelàm gì?

Câu trả lời:


10

Cài đặt bạn đề cập được sử dụng trong vendor/magento/framework/View/Element/UiComponentFactory.php

 $reverseMerge = isset($componentArguments['data']['reverseMetadataMerge'])
            && $componentArguments['data']['reverseMetadataMerge'];
        $bundleComponents = $this->mergeMetadata($identifier, $bundleComponents, $reverseMerge);

điều này sẽ hợp nhất siêu dữ liệu đã được xác định trong vendor/magento/module-customer/view/base/ui_component/customer_form.xmlvới một số siêu dữ liệu khác được xác định trong hàm tạo của nhà cung cấp dữ liệu.

protected function mergeMetadata($identifier, array $bundleComponents, $reverseMerge = false)
{
    $dataProvider = $this->getDataProvider($identifier, $bundleComponents);
    if ($dataProvider instanceof DataProviderInterface) {
        $metadata = [
            $identifier => [
                'children' => $dataProvider->getMeta(),
            ],
        ];
        $bundleComponents = $this->mergeMetadataItem($bundleComponents, $metadata, $reverseMerge);
    }

    return $bundleComponents;
}

Trong trường hợp tài liệu, nhà cung cấp dữ liệu của bạn là vendor/magento/module-customer/Model/Customer/DataProvider.phpbên trong hàm tạo

 $this->meta['customer']['children'] = $this->getAttributesMeta(
        $this->eavConfig->getEntityType('customer')
    );
    $this->meta['address']['children'] = $this->getAttributesMeta(
        $this->eavConfig->getEntityType('customer_address')
    );

có thêm một số thuộc tính khác. Trong trường hợp của khách hàng, các thuộc tính là các thuộc tính được hiển thị bằng màu xanh lam trong hình ảnh sau đây

khách hàng thêm thuộc tính

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.