การตั้งค่าที่คุณพูดถึงจะใช้ 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')
);
ที่เพิ่มคุณสมบัติอื่น ๆ ในกรณีของลูกค้าแอททริบิวต์คือแอททริบิวต์ที่แสดงด้วยสีฟ้าในภาพต่อไปนี้