Що означають "джерело" та "dataScope" в адміністраторній формі файлу конфігурації компонента


11

У конфігурації компонентів інтерфейсу користувача адміністратора Magento2 є вузли джерела та данихScope . Що вони означають і як їх використовувати?

<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>

Відповіді:


20

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


1

це означає, що ваше поле буде надіслано в POST як ваше значення "dataScope", у вашій ситуації, наприклад, запит на повідомлення буде подібний ['title'] => var


Ви пропустили одне запитання. У чому сенс джерела ? Якщо це джерело даних, чому аргументом є сторінка , а не page_listing_data_source ?
Ключ Шан
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.