In Bezug auf den sourceKnoten
Der sourceWert des Knotens entspricht einem Schlüssel im Datenarray, der von der \Magento\Framework\View\Element\UiComponent\DataProvider\DataProviderInterface::getDataMethode Ihrer UI-Komponente zurückgegeben wird.
Betrachten wir zum Beispiel die Benutzeroberfläche customer_form .
Datei/Magento/Customer/view/base/ui_component/customer_form.xml
Von hier aus können Sie sehen, dass Magento für die meisten Felder den customerWert unter dem sourceKnoten verwendet.
Warten Sie jedoch, bis sich die Felder unter dem addressFeldsatz in den Wert geändert haben address.
Lassen Sie uns nun einen kurzen Blick auf den entsprechenden DataProvider für die UI-Komponente customer_form werfen .
Die Klasse ist \Magento\Customer\Model\Customer\DataProvider.
Die Methode getDatadieser Klasse ist ungefähr für die Rückgabe von Daten verantwortlich, die in die entsprechenden Felder ausgefüllt werden, die von der Komponente customer_form deklariert wurden .
Wie Sie jetzt erraten können, der Kunde Wert des sourceerzählt Knoten uns , den Wert unter dem Schlüssel gespeichert verwenden Kunden in dem getDataVerfahren, während die Adresse source zeigt auf die Daten unter dem Schlüssel gespeichert Adresse in den zurückgegebenen Daten.
Näher betrachten:
<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>
Das obige Feld bezieht seinen Vornamenwert aus den Daten, die unter dem vom DataProvider des Kunden zurückgegebenen Schlüsselkunden gespeichert sind .
Während im Fall unten, ist die Quelle des Vorname Wert der unter dem Schlüssel gespeicherten Daten Adresse :
<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>
In Bezug auf den dataScopeKnoten
Der dataScopeKnoten ermöglicht es Ihnen , einen Wert für das ändern Namen Attribut Ihrer Eingabe (Feld), zum Beispiel
<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>
wird das Ergebnis Eingabe wie folgt wiedergegeben werden:<input name="field_name"...>
Sie können auch die Werte in die schreiben dataScope: durch Punkte getrennten Knoten customer.address.firstname, in diesem Fall das Ergebnis Eingabe wie folgt wiedergegeben: <input name="customer[address][firstname]"...>
Hier ist , wo die Magie passiert .
Außerdem ändert der dataScopeKnoten den Pfad des abgerufenen Werts für ein Feld. Dies wird mittels der Verknüpfungstechnik erreicht .