Dalam file konfigurasi Komponen Bentuk UI Magento 2, Anda akan sering melihat itematribut dengan yang sama source- di <item name="source" xsi:type="string">block</item>bawah.
#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>
Untuk apa bidang-bidang ini? Saya bertanya karena sepertinya mereka tidak perlu. Sebagai contoh, modul dalam repositori GitHub ini mengonfigurasi bentuk Komponen UI yang berfungsi , tetapi tidak menggunakan name="source"item ini .
Apakah ada yang tahu untuk apa name="source"barang - barang ini? Saya mengetahui mekanika Komponen UI yang mengambil XML dan cofigures sebagai x-magento-initJSON
"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"
}
},
Yang dimasukkan ke uiElementobjek model tampilan Knockout berbasis. Namun, tidak jelas bagaimana pohon uiElementobjek model tampilan Knockout bersarang menggunakan bidang tingkat sourcebidang ini.
Jika saya melihat uiElement's initModulesmetode
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;
},
Saya melihat objek referensi sourceproperti, dan jika tidak disetel, akan mencapai ke registri untuk objek menggunakan providerproperti sebagai pengenal string / kunci. Ini tampaknya seperti nilai ini sourceitem tidak digunakan. Namun, mungkin saja mereka digunakan oleh kode PHP, atau kode javascript lainnya. Karena itu, pertanyaan saya.

sourcedilakukan di file XML itu :)