Apa yang dimaksud dengan "sumber" dan "dataScope" di admin dari file konfigurasi komponen Ui


11

Ada node sumber dan dataScope di admin Magento2 dari konfigurasi komponen UI. Apa artinya dan bagaimana seharusnya digunakan?

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

Jawaban:


20

Mengenai sourcesimpul

Nilai sourcenode sesuai dengan kunci dalam array data yang dikembalikan oleh \Magento\Framework\View\Element\UiComponent\DataProvider\DataProviderInterface::getDatametode komponen UI Anda.


Sebagai contoh, mari kita pertimbangkan UI customer_form .
Mengajukan/Magento/Customer/view/base/ui_component/customer_form.xml

Dari sini Anda dapat melihat bahwa sebagian besar bidang Magento menggunakan customernilai di bawah sourcesimpul.
Tapi tunggu, untuk bidang di bawah addressfieldset, nilai ini telah berubah menjadi address.

Sekarang mari kita lihat sekilas DataProvider terkait untuk komponen UI customer_form .
Kelasnya adalah \Magento\Customer\Model\Customer\DataProvider.

Secara kasar, metode getDatakelas ini bertanggung jawab untuk mengembalikan data yang terisi ke bidang terkait yang dinyatakan oleh komponen customer_form .
Seperti yang dapat Anda tebak sekarang, nilai pelanggan dari sourcesimpul memberitahu kami untuk menggunakan nilai yang disimpan di bawah pelanggan utama dalam getDatametode, sementara alamat source menunjuk ke data yang disimpan di bawah alamat utama dalam data yang dikembalikan.

Melihat lebih dekat: <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>

Bidang di atas mengambil nilai nama depan dari data yang disimpan di bawah pelanggan utama yang dikembalikan oleh DataProvider pelanggan .

Sementara dalam kasus di bawah ini, sumber nilai nama depan adalah data yang disimpan di bawah alamat utama : <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>


Mengenai dataScopesimpul

The dataScopesimpul memungkinkan Anda untuk mengubah nilai untuk nama atribut masukan Anda (lapangan), misalnya, <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 hasil akan diberikan sebagai berikut:<input name="field_name"...>

Anda juga dapat menulis nilai-nilai ke dalam dataScopesimpul yang dipisahkan oleh titik-titik:, customer.address.firstnamedalam hal ini input hasil yang diberikan sebagai berikut: <input name="customer[address][firstname]"...> Di sinilah keajaiban terjadi .

Juga dataScopesimpul perubahan jalur nilai diambil untuk lapangan. Ini dicapai melalui teknik menghubungkan .


1

ini artinya bidang Anda akan dikirim dalam POST seperti nilai "dataScope" Anda, dalam situasi Anda misalnya permintaan posting akan seperti ['title'] => var


Anda melewatkan satu pertanyaan. Apa arti sumbernya ? Jika itu sumber data, mengapa argumennya adalah halaman , bukan page_listing_data_source ?
Key Shang
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.