Was bedeuten "source" und "dataScope" in der Ui-Komponentenkonfigurationsdatei in Administratorform?

11

In der Konfiguration der UI-Komponenten der Magento2-Administratorform befinden sich Quell- und dataScope- Knoten. Was bedeuten sie und wie sollen sie verwendet werden?

<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">Page Title</item>
            <item name="formElement" xsi:type="string">input</item>
            <item name="source" xsi:type="string">page</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>
Nero
quelle

Antworten:

20

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 .

Alexey Varlamov
quelle
1

Dies bedeutet, wie Ihr Feld im POST wie Ihr "dataScope" -Wert gesendet wird, in Ihrer Situation beispielsweise nach der Anfrage ['title'] => var

Slava Yurthev
quelle
Sie haben eine Frage verpasst. Was bedeutet Quelle ? Wenn es sich um eine Datenquelle handelt, warum lautet das Argument page und nicht page_listing_data_source ?
Key Shang