Щодо sourceвузла
Значення sourceвузла відповідає ключу в масиві даних, поверненому \Magento\Framework\View\Element\UiComponent\DataProvider\DataProviderInterface::getDataметодом вашого компонента інтерфейсу.
Наприклад, розглянемо інтерфейс customer_form .
Файл/Magento/Customer/view/base/ui_component/customer_form.xml
Звідси видно, що для більшості полів Magento використовує customerзначення під sourceвузлом.
Але зачекайте, для полів під addressнабором полі це значення змінилося на address.
Тепер давайте коротко розглянемо відповідний DataProvider для компонента інтерфейсу customer_form .
Клас є \Magento\Customer\Model\Customer\DataProvider.
Приблизно метод getDataцього класу відповідає за повернення даних, заповнених у відповідні поля, оголошені компонентом customer_form .
Як ви вже здогадалися, клієнтське значення sourceвузла говорить нам використовувати значення, збережене під ключовим клієнтом у 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>
Поле вище приймає значення свого імені з даних, що зберігаються під ключовим клієнтом, повернених 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вузол змінює шлях до отриманого значення для поля. Це досягається за допомогою техніки зв’язування .