По поводу sourceузла
Значение sourceузла соответствует ключу в массиве данных, возвращаемому \Magento\Framework\View\Element\UiComponent\DataProvider\DataProviderInterface::getDataметодом вашего компонента пользовательского интерфейса.
Например, давайте рассмотрим пользовательский интерфейс customer_form .
файл/Magento/Customer/view/base/ui_component/customer_form.xml
Отсюда видно, что для большинства полей Magento использует customerзначение под sourceузлом.
Но подождите, для полей под addressfieldset это значение изменилось на address.
Теперь давайте кратко рассмотрим соответствующий DataProvider для компонента пользовательского интерфейса customer_form .
Класс есть \Magento\Customer\Model\Customer\DataProvider.
Грубо говоря, метод getDataэтого класса отвечает за возврат данных, которые заполняются в соответствующие поля, объявленные компонентом customer_form .
Как вы теперь можете догадаться, значение customersource узла указывает нам использовать значение, сохраненное в ключе customer в getDataметоде, в то время как адрес source указывает на данные, сохраненные под адресом ключа в возвращаемых данных.
Пристальный взгляд:
<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>
Поле выше берет свое имя из данных, хранящихся в ключе customer, возвращенном DataProvider клиента .
Хотя в приведенном ниже случае источником значения имени является данные, хранящиеся под ключевым адресом :
<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>
По поводу dataScopeузла
dataScopeУзел позволяет изменять значение для имени атрибута вашего ввода (поля), например,
<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>
входной результат будет оказана следующим образом :<input name="field_name"...>
Вы также можете записать значения в dataScopeузел , разделенные точками: customer.address.firstnameв этом случае входной результат оказывается следующим: <input name="customer[address][firstname]"...>
Вот где магия происходит .
Также dataScopeузел изменяет путь к полученному значению для поля. Это достигается с помощью техники связывания .