Dans les fichiers de configuration du composant de formulaire UI de Magento 2, vous verrez souvent un itemattribut avec le même de source- <item name="source" xsi:type="string">block</item>ci - dessous.
#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>
À quoi servent ces champs? Je demande parce qu'il semble que ce ne soit pas nécessaire. Par exemple, le module de ce référentiel GitHub configure un formulaire de composant d'interface utilisateur fonctionnel , mais n'utilise pas ces name="source"éléments.
Quelqu'un sait-il à quoi name="source"servent ces articles? Je connais le mécanisme du composant UI qui prend le XML et le cofigure en 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"
}
},
Qui est introduit dans un uiElementobjet de modèle de vue Knockout basé. Cependant, il n'est pas clair comment l'arborescence imbriquée des uiElementobjets de modèle de vue Knockout basée utilise ces champs au niveau du sourcechamp.
Si je regarde le uiElementde » initModulesméthode
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;
},
Je vois que l'objet fait référence à une sourcepropriété, et s'il n'est pas défini, atteindra dans le registre un objet utilisant la providerpropriété comme identifiant de chaîne / clé. Il semble que la valeur de ces sourceéléments ne soit pas utilisée. Cependant, il est possible qu'ils soient utilisés par le code PHP ou un autre code javascript. D'où ma question.

sourcepasse dans ces fichiers XML :)