Dans les fichiers de configuration du composant de formulaire UI de Magento 2, vous verrez souvent un item
attribut 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-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"
}
},
Qui est introduit dans un uiElement
objet de modèle de vue Knockout basé. Cependant, il n'est pas clair comment l'arborescence imbriquée des uiElement
objets de modèle de vue Knockout basée utilise ces champs au niveau du source
champ.
Si je regarde le uiElement
de » initModules
mé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 source
propriété, et s'il n'est pas défini, atteindra dans le registre un objet utilisant la provider
proprié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.
source
passe dans ces fichiers XML :)