Per quanto riguarda il source
nodo
Il source
valore del nodo corrisponde a una chiave nell'array di dati restituita dal \Magento\Framework\View\Element\UiComponent\DataProvider\DataProviderInterface::getData
metodo 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 customer
valore sotto il source
nodo.
Ma aspetta, per i campi sotto il address
fieldset 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 getData
di 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 source
nodo ci dice di usare il valore memorizzato sotto il cliente chiave nel getData
metodo, 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 dataScope
nodo
Il dataScope
nodo 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 dataScope
nodo separati da punti:, customer.address.firstname
in questo caso l'input del risultato è reso come segue: <input name="customer[address][firstname]"...>
Qui è dove avviene la magia .
Inoltre, il dataScope
nodo modifica il percorso del valore recuperato per un campo. Ciò si ottiene mediante la tecnica di collegamento .