ในไฟล์การกำหนดค่า UI ส่วนประกอบของ Magento 2 คุณมักจะเห็นแอitem
ททริบิวด้วยเหมือนsource
- <item name="source" xsi:type="string">block</item>
ด้านล่าง
#File: vendor/magento/module-cms/view/adminhtml/ui_component/cms_block_form.xml
<field name="title">
<argument name="data" xsi:type="array">
<item name="config" xsi:type="array">
<item name="dataType" xsi:type="string">text</item>
<item name="label" xsi:type="string" translate="true">Block Title</item>
<item name="formElement" xsi:type="string">input</item>
<item name="source" xsi:type="string">block</item>
<item name="sortOrder" xsi:type="number">20</item>
<item name="dataScope" xsi:type="string">title</item>
<item name="validation" xsi:type="array">
<item name="required-entry" xsi:type="boolean">true</item>
</item>
</item>
</argument>
</field>
ฟิลด์เหล่านี้มีไว้เพื่อทำอะไร? ฉันถามเพราะดูเหมือนว่าพวกเขาไม่จำเป็น ตัวอย่างเช่นโมดูลในที่เก็บ GitHub นี้ กำหนดค่ารูปแบบองค์ประกอบ UI ที่ใช้งานได้ แต่ไม่ได้ใช้name="source"
รายการเหล่านี้
ไม่มีใครรู้ว่าสิ่งเหล่านี้name="source"
มีไว้เพื่ออะไร? ฉันรับรู้ถึง UI Component mechanic ที่ใช้ XML และกำหนดค่าเป็นx-magento-init
JSON
"block_id": {
"type": "form.input",
"name": "block_id",
"dataScope": "block_id",
"config": {
"component": "Magento_Ui\/js\/form\/element\/abstract",
"template": "ui\/form\/field",
"visible": false,
"dataType": "text",
"formElement": "input",
"source": "block"
}
},
ซึ่งถูกป้อนเข้าสู่uiElement
วัตถุโมเดลมุมมองการทำให้ล้มลง อย่างไรก็ตามยังไม่ชัดเจนว่าต้นไม้ที่ซ้อนกันของuiElement
วัตถุแบบจำลองมุมมองที่น่าพิศวงโดยใช้ฟิลด์ระดับฟิลด์เหล่านี้source
ได้อย่างไร
ถ้าฉันมองไปที่uiElement
's initModules
วิธี
initModules: function () {
_.each(this.modules, function (name, property) {
if (name) {
this[property] = this.requestModule(name);
}
}, this);
if (!_.isFunction(this.source)) {
this.source = registry.get(this.provider);
}
return this;
},
ฉันเห็นวัตถุที่อ้างอิงsource
คุณสมบัติและถ้าไม่ได้ตั้งค่าจะเข้าถึงรีจิสทรีสำหรับวัตถุที่ใช้provider
คุณสมบัติเป็นตัวระบุสตริง / คีย์ มันดูเหมือนว่าค่าของเหล่านี้source
รายการที่ไม่ได้ใช้ อย่างไรก็ตามเป็นไปได้ว่ามันถูกใช้งานโดยรหัส PHP หรือโค้ดจาวาสคริปต์อื่น ๆ ดังนั้นคำถามของฉัน
source
กำลังทำอะไรอยู่ในไฟล์ XML เหล่านั้น :)