Щодо 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
вузол змінює шлях до отриманого значення для поля. Це досягається за допомогою техніки зв’язування .