reverseMetadataMerge ในองค์ประกอบ UI คืออะไร


10

เมื่อฉันดูเอกสารประกอบของ UI Componentsฉันสังเกตเห็นสิ่งต่อไปนี้:

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

ตอนนี้ข้อโต้แย้งส่วนใหญ่ค่อนข้างอธิบายตนเองในสิ่งที่พวกเขาทำหรือฉันรู้แล้ว แต่สิ่งที่จะreverseMetadataMergeทำอย่างไร

คำตอบ:


11

การตั้งค่าที่คุณพูดถึงจะใช้ vendor/magento/framework/View/Element/UiComponentFactory.php

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

สิ่งนี้จะรวมข้อมูลเมตาที่กำหนดไว้แล้วในvendor/magento/module-customer/view/base/ui_component/customer_form.xmlกับข้อมูลเมตาอื่น ๆ ที่กำหนดไว้ในตัวสร้างของผู้ให้บริการข้อมูล

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

ในกรณีของเอกสารผู้ให้บริการข้อมูลของคุณคือvendor/magento/module-customer/Model/Customer/DataProvider.phpว่าภายในตัวสร้างมี

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

ที่เพิ่มคุณสมบัติอื่น ๆ ในกรณีของลูกค้าแอททริบิวต์คือแอททริบิวต์ที่แสดงด้วยสีฟ้าในภาพต่อไปนี้

แอตทริบิวต์ที่ลูกค้าเพิ่ม

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.