在Magento 2的UI表单组件配置文件中,您经常会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组件机制采用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
基于的Knockout视图模型对象中。但是,尚不清楚uiElement
基于Knockout视图模型对象的嵌套树如何使用这些字段级别的source
字段。
如果我看看uiElement
的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代码或其他一些javascript代码可能会使用它们。因此,我的问题。
source
这些XML文件中的内容:)