Di Magento 2.1, ada 25 total penyedia Komponen UI daftar / data grid yang dikonfigurasi dan digunakan. Kelas dan ui_component
file penyedia data mereka tercantum di bawah ini
Magento\Bundle\Ui\DataProvider\Product\BundleDataProvider bundle_product_listing.xmlMagento\Catalog\Ui\DataProvider\Product\Attributes\Listing product_attributes_grid.xml
Magento\Catalog\Ui\DataProvider\Product\ProductCustomOptionsDataProvider product_custom_options_listing.xml
Magento\Catalog\Ui\DataProvider\Product\ProductDataProvider configurable_associated_product_listing.xml
Magento\Catalog\Ui\DataProvider\Product\ProductDataProvider product_listing.xml
Magento\Catalog\Ui\DataProvider\Product\Related\CrossSellDataProvider crosssell_product_listing.xml
Magento\Catalog\Ui\DataProvider\Product\Related\RelatedDataProvider related_product_listing.xml
Magento\Catalog\Ui\DataProvider\Product\Related\UpSellDataProvider upsell_product_listing.xml
Magento\Cms\Ui\Component\DataProvider cms_block_listing.xml
Magento\Cms\Ui\Component\DataProvider cms_page_listing.xml
Magento\ConfigurableProduct\Ui\DataProvider\Attributes product_attributes_listing.xml
Magento\Customer\Ui\Component\DataProvider customer_listing.xml
Magento\Framework\View\Element\UiComponent\DataProvider\DataProvider customer_online_grid.xml
Magento\Framework\View\Element\UiComponent\DataProvider\DataProvider sales_order_creditmemo_grid.xml
Magento\Framework\View\Element\UiComponent\DataProvider\DataProvider sales_order_grid.xml
Magento\Framework\View\Element\UiComponent\DataProvider\DataProvider sales_order_invoice_grid.xml
Magento\Framework\View\Element\UiComponent\DataProvider\DataProvider sales_order_shipment_grid.xml
Magento\Framework\View\Element\UiComponent\DataProvider\DataProvider sales_order_view_creditmemo_grid.xml
Magento\Framework\View\Element\UiComponent\DataProvider\DataProvider sales_order_view_invoice_grid.xml
Magento\Framework\View\Element\UiComponent\DataProvider\DataProvider sales_order_view_shipment_grid.xml
Magento\Framework\View\Element\UiComponent\DataProvider\DataProvider search_synonyms_grid.xml
BraintreeTransactionsDataProvider (virtual type) braintree_report.xml
Magento\Framework\View\Element\UiComponent\DataProvider\DataProvider
Magento\GroupedProduct\Ui\DataProvider\Product\GroupedProductDataProvider grouped_product_listing.xml
Magento\Review\Ui\DataProvider\Product\ReviewDataProvider review_listing.xml
Magento\Theme\Ui\Component\Design\Config\DataProvider design_config_listing.xml
Berdasarkan informasi ini, tampaknya ada dua kelas dasar yang dapat digunakan oleh pemrogram pengguna akhir untuk mendasarkan komponen kisi mereka
- Magento \ Framework \ View \ Element \ UiComponent \ DataProvider \ DataProvider
- Magento \ Ui \ DataProvider \ AbstractDataProvider
The Magento\Ui\DataProvider\AbstractDataProvider
kelas tampaknya sederhana dari dua, dan (tampaknya?) Hanya membutuhkan konfigurasi dari model sumber daya Magento. Magento\Customer\Ui\Component\DataProvider
Modul kisi pelanggan didasarkan pada kelas ini, dan tampaknya memiliki semua fungsi penyortiran, pemfilteran, dll. Yang diperlukan untuk daftar kisi.
Apakah ada alasan yang Magento\Framework\View\Element\UiComponent\DataProvider\DataProvider
ada - atau hanya kode lama / baru yang mengambil pendekatan berbeda untuk membuat penyedia data? Dengan kata lain, apakah menggunakan Magento\Framework\View\Element\UiComponent\DataProvider\DataProvider
membawa fitur tambahan ke meja, atau mengaktifkan bagian lain dari sistem untuk melakukan sesuatu dengan grid? Melihat kode sumber, Magento\Framework\App\RequestInterface
sepertinya menarik - karena ini menyiratkan Anda mungkin melaporkan fungsionalitas "gratis" dengan kisi-kisi ini. Namun, tanpa safari kode yang luas, saya tidak yakin apakah itu benar atau tidak, dan saya berharap seseorang memiliki penjelasan yang jelas tentang mengapa Anda akan menggunakan satu kelas di atas yang lain.
sumber
Jawaban:
Bagi saya, perbedaan utama adalah
Magento/Framework/View/Element/UiComponent/DataProvider/DataProvider
penggunaan API Pencarian.Kelas-kelas berikut digunakan dalam kelas ini:
Magento\Framework\Api\FilterBuilder
Magento\Framework\Api\Search\ReportingInterface
Magento\Framework\Api\Search\SearchCriteria
Magento\Framework\Api\Search\SearchCriteriaBuilder
Magento\Framework\Api\Search\SearchResultInterface
Yang digunakan untuk memfilter / memesan / paging:
Dan juga jelas untuk pencarian:
Apa yang menarik jika itu
Magento/Ui/DataProvider/AbstractDataProvider
menyebutkan API Pencarian tetapi tidak menggunakannya sama sekali:Sekarang jika Anda memeriksa riwayat file-file di GitHub, inilah yang Anda dapatkan:
Seperti yang Anda lihat sebagian besar komit untuk kedua file tersebut ditautkan dengan tiket internal berikut:
MAGETWO-39905: UI components compatibility with Search API
Bahkan jika sudah dilakukan untuk
Magento/Framework
file itu belum pernah dilakukan untukMagento/Ui
file.Selain itu saya tidak melihat perbedaan antara file-file itu. Satu sedang bekerja secara langsung pada koleksi, yang lain menggunakan Pencarian API untuk menghasilkan hasil.
sumber