En los archivos de configuración de componentes de formulario de IU de Magento 2, a menudo verá un item atributo con el mismo de source- <item name="source" xsi:type="string">block</item>a continuación.
#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>
¿Para qué son estos campos? Pregunto porque parece que no son necesarios. Por ejemplo, el módulo en este repositorio de GitHub configura un formulario de componente de interfaz de usuario que funciona , pero no usa estos name="source"elementos.
¿Alguien sabe lo que estos name="source" sirven artículos? Soy consciente de la mecánica del componente UI que toma el XML y lo configura como 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"
}
},
Que se alimenta a un uiElementobjeto de modelo de vista Knockout basado. Sin embargo, no está claro cómo el árbol anidado de los uiElementobjetos del modelo de vista Knockout basado utiliza estos campos de nivel de sourcecampo.
Si miro el uiElement 's initModulesmétodo
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;
},
Veo que el objeto hace referencia a una sourcepropiedad, y si no está configurado, alcanzará el registro de un objeto usando la providerpropiedad como un identificador de cadena / clave. Se parece que el valor de estos sourceno se utiliza artículos. Sin embargo, es posible que los use el código PHP o algún otro código javascript. Por lo tanto, mi pregunta.

sourcehaciendo en esos archivos XML :)