Qu'est-ce que reverseMetadataMerge dans les composants d'interface utilisateur?


Réponses:


10

Le paramètre que vous mentionnez est utilisé dans vendor/magento/framework/View/Element/UiComponentFactory.php

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

cela fusionnera les métadonnées déjà définies dans le vendor/magento/module-customer/view/base/ui_component/customer_form.xmlavec d'autres métadonnées définies dans le constructeur du fournisseur de données.

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

Dans le cas de la documentation, votre fournisseur de données est vendor/magento/module-customer/Model/Customer/DataProvider.phpqu'à l'intérieur du constructeur

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

qui ajoute quelques autres attributs. Dans le cas du client, les attributs sont ceux indiqués en bleu dans l'image suivante

attributs ajoutés par le client

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.