Per quanto riguarda il sourcenodo
Il sourcevalore del nodo corrisponde a una chiave nell'array di dati restituita dal \Magento\Framework\View\Element\UiComponent\DataProvider\DataProviderInterface::getDatametodo del componente UI.
Ad esempio, consideriamo l' interfaccia utente customer_form .
File/Magento/Customer/view/base/ui_component/customer_form.xml
Da qui puoi vedere che per la maggior parte dei campi Magento utilizza il customervalore sotto il sourcenodo.
Ma aspetta, per i campi sotto il addressfieldset questo valore è cambiato in address.
Ora diamo una breve occhiata al DataProvider corrispondente per il componente UI customer_form .
La classe è \Magento\Customer\Model\Customer\DataProvider.
In sostanza, il metodo getDatadi questa classe è responsabile della restituzione dei dati che vengono compilati nei campi corrispondenti dichiarati dal componente customer_form .
Come puoi immaginare ora, il valore del cliente del sourcenodo ci dice di usare il valore memorizzato sotto il cliente chiave nel getDatametodo, mentre l' indirizzo source punta ai dati memorizzati sotto l' indirizzo chiave nei dati restituiti.
Sguardo più ravvicinato:
<field name="firstname" formElement="input">
<argument name="data" xsi:type="array">
<item name="config" xsi:type="array">
item name="source" xsi:type="string">customer</item>
</item>
</argument>
</field>
Il campo sopra prende il suo valore di nome dai dati memorizzati sotto il cliente chiave restituito dal DataProvider del cliente .
Mentre nel caso seguente, l'origine del valore del nome è i dati memorizzati sotto l' indirizzo chiave :
<field name="firstname" formElement="input">
<argument name="data" xsi:type="array">
<item name="config" xsi:type="array">
<item name="source" xsi:type="string">address</item>
</item>
</argument>
</field>
Per quanto riguarda il dataScopenodo
Il dataScopenodo consente di modificare un valore per l' attributo name del proprio input (campo), ad es.
<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="formElement" xsi:type="string">input</item
<item name="dataScope" xsi:type="string">field_name</item>
</item>
</argument>
</field>
L'input del risultato verrà visualizzato come segue:<input name="field_name"...>
Puoi anche scrivere i valori nel dataScopenodo separati da punti:, customer.address.firstnamein questo caso l'input del risultato è reso come segue: <input name="customer[address][firstname]"...>
Qui è dove avviene la magia .
Inoltre, il dataScopenodo modifica il percorso del valore recuperato per un campo. Ciò si ottiene mediante la tecnica di collegamento .