UIコンポーネントのドキュメントを見ると、次のことがわかります。
<item name="reverseMetadataMerge" xsi:type="boolean">true</item>
今、ほとんどの議論は彼らが何をするかについてかなり自明であるか、私はすでにそれを知っていreverseMetadataMerge
ますが、何をしますか?
UIコンポーネントのドキュメントを見ると、次のことがわかります。
<item name="reverseMetadataMerge" xsi:type="boolean">true</item>
今、ほとんどの議論は彼らが何をするかについてかなり自明であるか、私はすでにそれを知っていreverseMetadataMerge
ますが、何をしますか?
回答:
あなたが言及した設定はで使用されています 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')
);
それはいくつかの他の属性を追加します。顧客の場合、属性は次の画像で青色で示されているものです