Що таке reverseMetadataMerge в компонентах інтерфейсу?


10

Переглядаючи документацію компонентів інтерфейсу , я помічаю таке:

<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')
    );

що додає деякі інші атрибути. У випадку замовника атрибутами є ті, які показані синім кольором на наступному зображенні

клієнт додав атрибути

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