¿Qué es reverseMetadataMerge en los componentes de la interfaz de usuario?

Respuestas:

10

La configuración que menciona se utiliza en vendor/magento/framework/View/Element/UiComponentFactory.php

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

esto fusionará los metadatos ya definidos en el vendor/magento/module-customer/view/base/ui_component/customer_form.xmlcon algunos otros metadatos definidos en el constructor del proveedor de datos.

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

En el caso de la documentación, su proveedor de datos es vendor/magento/module-customer/Model/Customer/DataProvider.phpque dentro del constructor tiene

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

eso agrega algunos otros atributos. En el caso del cliente, los atributos son los que se muestran en color azul en la siguiente imagen

atributos agregados por el cliente

Springerin
fuente