Dalam file konfigurasi Komponen Bentuk UI Magento 2, Anda akan sering melihat item
atribut 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-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"
}
},
Yang dimasukkan ke uiElement
objek model tampilan Knockout berbasis. Namun, tidak jelas bagaimana pohon uiElement
objek model tampilan Knockout bersarang menggunakan bidang tingkat source
bidang ini.
Jika saya melihat uiElement
's initModules
metode
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 source
properti, dan jika tidak disetel, akan mencapai ke registri untuk objek menggunakan provider
properti sebagai pengenal string / kunci. Ini tampaknya seperti nilai ini source
item tidak digunakan. Namun, mungkin saja mereka digunakan oleh kode PHP, atau kode javascript lainnya. Karena itu, pertanyaan saya.
source
dilakukan di file XML itu :)