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 item
thuộ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-init
dạ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 uiElement
các đối tượng mô hình khung nhìn Knockout dựa trên sử dụng các trường mức source
trường này.
Nếu tôi nhìn vào uiElement
's initModules
phươ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 source
tí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 provider
tính làm định danh chuỗi / khóa. Có vẻ như giá trị của những source
vậ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 đó :)