W odniesieniu do source
węzła
Wartość source
węzła odpowiada kluczowi w tablicy danych zwróconej przez \Magento\Framework\View\Element\UiComponent\DataProvider\DataProviderInterface::getData
metodę komponentu interfejsu użytkownika.
Rozważmy na przykład interfejs użytkownika customer_form .
Plik/Magento/Customer/view/base/ui_component/customer_form.xml
Stąd widać, że dla większości pól Magento używa customer
wartości pod source
węzłem.
Ale poczekaj, dla pól w zestawie pól address
wartość ta zmieniła się na address
.
Teraz rzućmy okiem na odpowiedniego DataProvider dla komponentu interfejsu użytkownika customer_form .
Klasa jest \Magento\Customer\Model\Customer\DataProvider
.
Z grubsza metoda getData
tej klasy jest odpowiedzialna za zwracanie danych, które są wypełniane do odpowiednich pól zadeklarowanych przez komponent customer_form .
Jak można się teraz domyślać, wartość klientasource
węzła mówi nam, abyśmy korzystali z wartości przechowywanej pod kluczowym klientem w getData
metodzie, podczas gdy adres source
wskazuje dane przechowywane pod kluczowym adresem w zwróconych danych.
Bliższe spojrzenie:
<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>
Powyższe pole pobiera swoją wartość imienia z danych przechowywanych w kluczowym kliencie zwróconym przez DataProvider klienta .
Podczas gdy w poniższym przypadku źródłem wartości imienia są dane przechowywane pod adresem klucza :
<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>
W odniesieniu do dataScope
węzła
dataScope
Węzeł pozwala zmienić wartość dla nazwy atrybutu swojego wejścia (pola), np
<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>
Wejście wynik będzie wyświetlana w następujący sposób:<input name="field_name"...>
Możesz również zapisać wartości w dataScope
węźle oddzielone kropkami: customer.address.firstname
w tym przypadku dane wejściowe są renderowane w następujący sposób: <input name="customer[address][firstname]"...>
Oto, gdzie dzieje się magia .
Również dataScope
węzeł zmienia ścieżkę odzyskanej wartości dla pola. Osiąga się to za pomocą techniki łączenia .