In Bezug auf den source
Knoten
Der source
Wert des Knotens entspricht einem Schlüssel im Datenarray, der von der \Magento\Framework\View\Element\UiComponent\DataProvider\DataProviderInterface::getData
Methode 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 customer
Wert unter dem source
Knoten verwendet.
Warten Sie jedoch, bis sich die Felder unter dem address
Feldsatz 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 getData
dieser 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 source
erzählt Knoten uns , den Wert unter dem Schlüssel gespeichert verwenden Kunden in dem getData
Verfahren, 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 dataScope
Knoten
Der dataScope
Knoten 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 dataScope
Knoten den Pfad des abgerufenen Werts für ein Feld. Dies wird mittels der Verknüpfungstechnik erreicht .