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-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"
}
},
Que se alimenta a un uiElement
objeto de modelo de vista Knockout basado. Sin embargo, no está claro cómo el árbol anidado de los uiElement
objetos del modelo de vista Knockout basado utiliza estos campos de nivel de source
campo.
Si miro el uiElement
's initModules
mé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 source
propiedad, y si no está configurado, alcanzará el registro de un objeto usando la provider
propiedad como un identificador de cadena / clave. Se parece que el valor de estos source
no 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.
source
haciendo en esos archivos XML :)