Magento 2 memiliki uiComponent
fitur " " baru . Ini memungkinkan Anda untuk memasukkan <uiComponent/>
tag sederhana dalam tata letak Anda menangani file XML untuk menambahkan hal-hal seperti Grid dan formulir ke halaman aplikasi Anda.
Ini muncul bahwa konfigurasi untuk data grid (a listing
) membutuhkan dua benda koleksi dikonfigurasi.
Apa peran masing-masing koleksi konfigurasi di bawah ini? Atau apakah saya salah paham tentang peran koleksi ini? Atau adakah cara untuk membuat objek kotak hanya menggunakan satu koleksi?
Konfigurasi berikut ini menetapkan Komponen daftar UI bernama cms_page_listing
vendor/magento/module-cms/view/adminhtml/ui_component/cms_page_listing.xml
Dan Injeksi DI berikut memberitahu Magento bahwa cms_page_listing
harus menggunakan Magento\Cms\Model\ResourceModel\Page\Grid\Collection
koleksi.
<type name="Magento\Framework\View\Element\UiComponent\DataProvider\CollectionFactory">
<arguments>
<argument name="collections" xsi:type="array">
<item name="cms_page_listing_data_source" xsi:type="string">Magento\Cms\Model\ResourceModel\Page\Grid\Collection</item>
</argument>
</arguments>
</type>
Ini tampaknya menjadi koleksi utama yang digunakan untuk mengisi kotak.
Namun , ada juga ini PageGridDataProvider
dalam cms_page_listing
konfigurasi.
<!-- File: vendor/magento/module-cms/view/adminhtml/ui_component/cms_page_listing.xml -->
<argument name="dataProvider" xsi:type="configurableObject">
<argument name="class" xsi:type="string">PageGridDataProvider</argument>
<argument name="name" xsi:type="string">cms_page_listing_data_source</argument>
<argument name="primaryFieldName" xsi:type="string">page_id</argument>
<argument name="requestFieldName" xsi:type="string">id</argument>
<argument name="data" xsi:type="array">
<item name="config" xsi:type="array">
<item name="update_url" xsi:type="url" path="mui/index/render"/>
</item>
</argument>
</argument>
The PageGridDataProvider
resolve ke virtualType sebuah
<virtualType name="PageGridDataProvider" type="Magento\Framework\View\Element\UiComponent\DataProvider\DataProvider">
<arguments>
<argument name="collection" xsi:type="object" shared="false">Magento\Cms\Model\ResourceModel\Page\Collection</argument>
<argument name="filterPool" xsi:type="object" shared="false">CmsGirdFilterPool</argument>
</arguments>
</virtualType>
Tipe virtual ini mengonfigurasi koleksi kedua ( Magento\Cms\Model\ResourceModel\Page\Collection
).
Tidak jelas mengapa konfigurasi kedua ini diperlukan, atau apa perannya dalam membuat kisi. Pertanyaan tingkat yang lebih tinggi mungkin adalah peran apa yang dimainkan oleh dataProvider
permainan dalam menciptakan Kotak UI . Pertanyaan yang lebih besar lebih besar mungkin Apa objek PHP yang dibuat untuk membuat Grid Daftar UI, dan bagaimana konfigurasi mengontrolnya