Was ist reverseMetadataMerge in UI-Komponenten?


Antworten:


10

Die von Ihnen erwähnte Einstellung wird in verwendet vendor/magento/framework/View/Element/UiComponentFactory.php

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

Dadurch werden die bereits definierten Metadaten in vendor/magento/module-customer/view/base/ui_component/customer_form.xmlmit einigen anderen Metadaten zusammengeführt, die im Konstruktor des Datenproviders definiert sind.

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

Bei der Dokumentation handelt es sich bei Ihrem Datenprovider um vendor/magento/module-customer/Model/Customer/DataProvider.phpden im Konstruktor vorhandenen

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

das fügt einige andere Attribute hinzu. Im Falle des Kunden sind die Attribute diejenigen, die im folgenden Bild in blauer Farbe dargestellt sind

Der Kunde hat Attribute hinzugefügt

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.