Nei file di configurazione del componente modulo interfaccia utente di Magento 2, vedrai spesso un item
attributo con lo stesso di source
- <item name="source" xsi:type="string">block</item>
sotto.
#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>
A cosa servono questi campi? Chiedo perché sembra che non siano necessari. Ad esempio, il modulo in questo repository GitHub configura un modulo Componente UI funzionante , ma non li usaname="source"
elementi.
Qualcuno sa a cosa name="source"
servono questi articoli? Sono a conoscenza del meccanico dei componenti dell'interfaccia utente che accetta l'XML e lo configura come 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"
}
},
Che viene inserito in un uiElement
oggetto modello di vista Knockout basato. Tuttavia, non è chiaro in che modo l'albero nidificato degli uiElement
oggetti del modello della vista Knockout basata utilizza questi livelli di camposource
campo.
Se guardo il uiElement
's initModules
metodo
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;
},
Vedo che l'oggetto fa riferimento a una source
proprietà e, se non impostato, raggiungerà nel registro un oggetto che utilizza la provider
proprietà come identificatore di stringa / chiave. E sembra che il valore di questi source
elementi non è utilizzato. Tuttavia, è possibile che vengano utilizzati dal codice PHP o da qualche altro codice javascript. Quindi, la mia domanda.
source
facendo in quei file XML :)