Trong các tệp cấu hình Thành phần giao diện người dùng của Magento 2, bạn sẽ thường thấy một itemthuộc tính có cùng source- <item name="source" xsi:type="string">block</item>bên dưới.
#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>
Những lĩnh vực này để làm gì? Tôi hỏi vì có vẻ như chúng không cần thiết. Ví dụ: mô-đun trong kho GitHub này định cấu hình biểu mẫu Thành phần UI đang hoạt động , nhưng không sử dụng các name="source"mục này .
Có ai biết những thứ này name="source"để làm gì không? Tôi biết về cơ chế thành phần UI lấy XML và định cấu hình nó dưới x-magento-initdạng 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"
}
},
Được đưa vào một uiElementđối tượng mô hình khung nhìn Knockout dựa trên. Tuy nhiên, không rõ làm thế nào cây lồng nhau của uiElementcác đối tượng mô hình khung nhìn Knockout dựa trên sử dụng các trường mức sourcetrường này.
Nếu tôi nhìn vào uiElement's initModulesphương pháp
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;
},
Tôi thấy đối tượng tham chiếu một thuộc sourcetính và nếu nó không được đặt, sẽ truy cập vào sổ đăng ký cho một đối tượng sử dụng thuộc providertính làm định danh chuỗi / khóa. Có vẻ như giá trị của những sourcevật phẩm này không được sử dụng. Tuy nhiên, có thể chúng được sử dụng bởi mã PHP hoặc một số mã javascript khác. Do đó, câu hỏi của tôi.

sourceđang làm trong các tệp XML đó :)